如何使用正则表达式获得与模式完全匹配的单词

时间:2013-09-12 11:37:30

标签: java .net regex

我需要获得与我使用正则表达式给出的特定模式匹配的单词。

例如,如果模式是“ABC”,我需要获得单词字符串“ABC”,如果它在输入内容中。

内容:

  

这是 ABC 标题。主题名称是ABCDE。

     

我的书上有名字为BE-ABC的页面。    ABC 是标记名称。

我应该得到ABC作为上面的粗体字。它应该从ABCABCDE

返回匹配BE-ABC

我是否需要使用单线或多线模式来实现此目的?

5 个答案:

答案 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
相关问题