0

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

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

内容:

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

我的书有一页名为 BE-ABC。 ABC是标签名称。

我应该得到ABC上面加粗的话。ABC它应该从ABCDEor返回 matchBE-ABC

我需要使用单行或多行模式来实现这一点吗?

4

5 回答 5

2

正如 BackSlash 提到的,你应该使用yourString.contains("ABC").

否则,如果你真的需要一个正则表达式:

.*ABC.*

.匹配任何字符(换行符除外)并*表示零次或多次。因此,.*意味着零个或多个任何字符。

ABC是文字字符,再次.*出现。

您可以在http://regex101.com/r/yD3rX2测试此正则表达式

我所说的两种方法都会让您知道字符串是否包含字符“ABC”,但是它们不会返回字符“ABC”。在大多数情况下,您需要一个布尔值。

于 2013-09-12T11:42:43.227 回答
0

如果您只需要匹配 ABC 作为整个单词,请使用:

Matcher m = Pattern.compile("\\b(ABC)\\b", Pattern.MULTILINE).matcher(yourString);
while(m.find()) {
    System.out.println(m.group(1));
}
于 2013-09-12T11:47:35.133 回答
0
\s*ABC\s*

表示可选的任何空格,然后是 ABC 和可选的任何空格。听起来你只想要 ABC 的精确匹配?

请参阅下面的一个好的正则表达式备忘单:

http://regexlib.com/CheatSheet.aspx?AspxAutoDetectCookieSupport=1

于 2013-09-12T11:43:52.907 回答
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
于 2013-09-12T12:00:34.483 回答
0

将此代码放在一个函数中并调用它

if(yourString.contains(pattern)) //patern is passed as argument and is type string
return pattern;
于 2013-09-12T11:42:53.527 回答