我希望将我的字符串与一个或另一个序列匹配,并且必须至少匹配其中一个。
对于and
,我了解到它可以通过以下方式完成:
(?=one)(?=other)
OR有这样的东西吗?
我正在使用Java,Matcher和Pattern类。
答案 0 :(得分:4)
一般来说,关于正则表达式,你绝对应该在这里开始进入正则表达式仙境:Regex tutorial
目前需要的是|
(竖线字符)
要匹配字符串one
或other
,请使用:
(one|other)
或者如果你不想存储比赛,只需
one|other
特定于 Java ,this article is very good at explaining the subject
您必须以这种方式使用您的模式:
//Pattern and Matcher
Pattern compiledPattern = Pattern.compile(myPatternString);
Matcher matcher = pattern.matcher(myStringToMatch);
boolean isNextMatch = matcher.find(); //find next match, it exists,
if(isNextMatch) {
String matchedString = myStrin.substring(matcher.start(),matcher.end());
}
请注意,Matcher还有更多可能性,然后我在这里展示了......
//String functions
boolean didItMatch = myString.matches(myPatternString); //same as Pattern.matches();
String allReplacedString = myString.replaceAll(myPatternString, replacement)
String firstReplacedString = myString.replaceFirst(myPatternString, replacement)
String[] splitParts = myString.split(myPatternString, howManyPartsAtMost);
另外,我强烈建议使用Regexplanet (Java)或refiddle等在线正则表达式检查程序(这里没有特定于Java的检查程序),它们会让您的生活更轻松!
答案 1 :(得分:2)
“或”运算符拼写为|
,例如one|other
。
所有运营商都列在documentation。
中答案 2 :(得分:1)
答案 3 :(得分:0)
将|
字符用于 OR
Pattern pat = Pattern.compile("exp1|exp2");
Matcher mat = pat.matcher("Input_data");
答案 4 :(得分:0)
答案已经给出,使用管道'|'运营商。除此之外,在regexp测试器中测试正则表达式而不必运行应用程序可能很有用,例如: