Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用正则表达式获取与模式完全匹配的单词_Java_.net_Regex - Fatal编程技术网

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

Java 如何使用正则表达式获取与模式完全匹配的单词,java,.net,regex,Java,.net,Regex,我需要得到符合我使用正则表达式给出的特定模式的单词 例如,如果模式是“ABC”,我需要获取单词字符串“ABC”,如果它在输入内容中 内容: 这是ABC的标题。主题名为ABCDE 我的书有一页,书名是BE-ABC。 ABC是一个标记名 我应该得到上面粗体字所示的ABC。它应该从ABCDE或BE-ABC 我需要使用单线模式还是多线模式来实现这一点?如反斜杠所述,您应该使用yourString.contains(“ABC”) 否则,如果您确实需要正则表达式: .*ABC.* 匹配任何字符(换行符除外

我需要得到符合我使用正则表达式给出的特定模式的单词

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

内容:

这是ABC的标题。主题名为ABCDE

我的书有一页,书名是BE-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