使用或'|'在正则表达式中[重复]
Posted
技术标签:
【中文标题】使用或\'|\'在正则表达式中[重复]【英文标题】:Using or '|' in regex [duplicate]使用或'|'在正则表达式中[重复] 【发布时间】:2018-06-01 07:56:41 【问题描述】:我遇到了一个简单的问题,我想检查是否有任何单词:he, be, de 出现在我的文本中。
所以我使用“|”创建了模式(存在于代码中)象征或 然后我匹配我的文字。但是比赛给了我错误的结果(在打印声明中)。
我尝试使用正则表达式搜索在 Notepad++ 中进行相同的匹配,它在那里工作,但在 Java 中给出了 FALSE(不匹配)。 C
public class Del
public static void main(String[] args)
String pattern="he|be|de";
String text= "he is ";
System.out.println(text.matches(pattern));
谁能建议我做错了什么。 谢谢
【问题讨论】:
String.matches(regex)
检查整个字符串是否匹配,而不仅仅是开头。
matches
方法尝试匹配整个字符串,而不是字符串的一部分。
您也可以使用[hbd]e
(但同样不能使用matches
)。请注意:您还必须添加单词分隔符,否则它将匹配(我的意思是“查找”)bobshebob
中的he
和dipdedipdedap
中的de
。
嗨@usr2564301,你为什么说它是重复的。试图将文本与模式匹配的人如何得出结论认为我应该寻找“查找”v/s 匹配差异。
?因为它回答了这个问题?我所要做的就是搜索java match regex
;这个 Stack Overflow 答案排在首位。
【参考方案1】:
这是因为您试图匹配整个字符串而不是要查找的部分。例如,这段代码会发现只有一部分字符串符合当前的正则表达式:
Matcher m = Pattern.compile("he|be|de").matcher("he is ");
m.find(); //true
当您想匹配整个字符串并检查该字符串是否包含 he|be|de 时,请使用此正则表达式 .*(he|be|de).*
.
表示任何符号,*
是前一个符号,可能出现零次或多次。
示例:
"he is ".matches(".*(he|be|de).*"); //true
【讨论】:
感谢您的解释。 @Geek 不客气【参考方案2】: String regExp="he|be|de";
Pattern pattern = Pattern.compile(regExp);
String text = "he is ";
Matcher matcher = pattern.matcher(text);
System.out.println(matcher.find());
【讨论】:
以上是关于使用或'|'在正则表达式中[重复]的主要内容,如果未能解决你的问题,请参考以下文章