Java 如何使用正则表达式获取与模式完全匹配的单词
我需要得到符合我使用正则表达式给出的特定模式的单词 例如,如果模式是“ABC”,我需要获取单词字符串“ABC”,如果它在输入内容中 内容: 这是ABC的标题。主题名为ABCDE 我的书有一页,书名是BE-ABC。 ABC是一个标记名 我应该得到上面粗体字所示的Java 如何使用正则表达式获取与模式完全匹配的单词,java,.net,regex,Java,.net,Regex,我需要得到符合我使用正则表达式给出的特定模式的单词 例如,如果模式是“ABC”,我需要获取单词字符串“ABC”,如果它在输入内容中 内容: 这是ABC的标题。主题名为ABCDE 我的书有一页,书名是BE-ABC。 ABC是一个标记名 我应该得到上面粗体字所示的ABC。它应该从ABCDE或BE-ABC 我需要使用单线模式还是多线模式来实现这一点?如反斜杠所述,您应该使用yourString.contains(“ABC”) 否则,如果您确实需要正则表达式: .*ABC.* 匹配任何字符(换行符除外
ABC
。它应该从ABCDE
或BE-ABC
我需要使用单线模式还是多线模式来实现这一点?如反斜杠所述,您应该使用
yourString.contains(“ABC”)
否则,如果您确实需要正则表达式:
.*ABC.*
匹配任何字符(换行符除外),*
表示零次或多次。因此,*
表示任何字符的零个或多个
ABC
是文字字符,再次出现*
您可以在以下位置测试此正则表达式:
我声明的两种方法都会让您知道字符串是否包含字符“ABC”,但是它们不会返回字符“ABC”。在大多数情况下,您可能需要一个布尔值。将此代码放入函数中并调用它
if(yourString.contains(pattern)) //patern is passed as argument and is type string
return pattern;
表示任意空白,然后是ABC和任意空白。听起来你只想要ABC的精确匹配
有关良好的正则表达式备忘单,请参见以下内容:
如果只需要将ABC作为整词进行匹配,请使用:
Matcher m = Pattern.compile("\\b(ABC)\\b", Pattern.MULTILINE).matcher(yourString);
while(m.find()) {
System.out.println(m.group(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
为什么不
yourString.contains(“ABC”)
而不是regex?在这种情况下,您不需要正则表达式。我的要求是我将有一个模式####不完全是“ABC”,因此,yourString.contains(pattern)
,ABC
只是一个例子string类中的contains方法支持模式匹配吗?我不认为so@Dreek是的,我想要与我给出的模式完全匹配。那么我的正则表达式对你有效吗?@Dreek你给出的正则表达式对我无效。因为它甚至可以从字符串“ABCD”中得到ABC,所以我编辑了上面的答案。很抱歉它应该是:\sABC\s
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