我需要得到与我使用正则表达式给出的特定模式匹配的单词。
例如,如果模式是“ABC”,如果它在输入内容中,我需要获取单词字符串“ABC”。
内容:
这是ABC标题。主题名称是 ABCDE。
我的书有一页名为 BE-ABC。 ABC是标签名称。
我应该得到ABC
上面加粗的话。ABC
它应该从ABCDE
or返回 matchBE-ABC
我需要使用单行或多行模式来实现这一点吗?
正如 BackSlash 提到的,你应该使用yourString.contains("ABC")
.
否则,如果你真的需要一个正则表达式:
.*ABC.*
.
匹配任何字符(换行符除外)并*
表示零次或多次。因此,.*
意味着零个或多个任何字符。
ABC
是文字字符,再次.*
出现。
您可以在http://regex101.com/r/yD3rX2测试此正则表达式
我所说的两种方法都会让您知道字符串是否包含字符“ABC”,但是它们不会返回字符“ABC”。在大多数情况下,您需要一个布尔值。
如果您只需要匹配 ABC 作为整个单词,请使用:
Matcher m = Pattern.compile("\\b(ABC)\\b", Pattern.MULTILINE).matcher(yourString);
while(m.find()) {
System.out.println(m.group(1));
}
\s*ABC\s*
表示可选的任何空格,然后是 ABC 和可选的任何空格。听起来你只想要 ABC 的精确匹配?
请参阅下面的一个好的正则表达式备忘单:
http://regexlib.com/CheatSheet.aspx?AspxAutoDetectCookieSupport=1
您没有提到该模式是否还可以包含非字母数字字符。如果是这种情况,对于一般解决方案,我建议使用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
将此代码放在一个函数中并调用它
if(yourString.contains(pattern)) //patern is passed as argument and is type string
return pattern;