我需要获得与我使用正则表达式给出的特定模式匹配的单词。
例如,如果模式是“ABC”,我需要获得单词字符串“ABC”,如果它在输入内容中。
内容:
这是 ABC 标题。主题名称是ABCDE。
我的书上有名字为BE-ABC的页面。 ABC 是标记名称。
我应该得到ABC
作为上面的粗体字。它应该从ABC
或ABCDE
BE-ABC
我是否需要使用单线或多线模式来实现此目的?
答案 0 :(得分:2)
正如BackSlash所提到的,您应该使用yourString.contains("ABC")
。
否则,如果你真的需要正则表达式:
.*ABC.*
.
匹配任何字符(换行符除外),*
表示零次或多次。因此,.*
表示任何字符为零或更多。
ABC
是字面字符,再次出现.*
。
您可以在http://regex101.com/r/yD3rX2
测试此正则表达式我声明的两种方法都会告诉您字符串是否包含字符," ABC"但是它们不会返回字符" ABC"。在大多数情况下,您需要一个布尔值。
答案 1 :(得分:0)
将此代码放入函数中并调用它
if(yourString.contains(pattern)) //patern is passed as argument and is type string
return pattern;
答案 2 :(得分:0)
\s*ABC\s*
意味着可选地任何空格,然后是ABC,可选地任何空格。听起来你只想要ABC的精确匹配?
请参阅下面的好正则表达式备忘单:
http://regexlib.com/CheatSheet.aspx?AspxAutoDetectCookieSupport=1
答案 3 :(得分:0)
如果您只需要匹配ABC作为整个单词,请使用:
Matcher m = Pattern.compile("\\b(ABC)\\b", Pattern.MULTILINE).matcher(yourString);
while(m.find()) {
System.out.println(m.group(1));
}
答案 4 :(得分:0)
您没有提到该模式是否也包含非字母数字字符。
如果是这种情况,对于一般解决方案,我建议使用Regex.Escape(pattern)
使其成为精确的文字匹配,例如:
string inputString = "BE-ABCDE"
string literalToMatch = "ABC";
string escapedPattern = Regex.Escape(literalToMatch);
Regex regex = new Regex(escapedPattern);
Match match = r.Match(inputString);
//...Process appropriately - see http://msdn.microsoft.com/en-us/library/twcw2f1c.aspx