如何在正则表达式中提供OR运算符?

时间:2012-11-28 10:31:14

标签: java regex

我希望将我的字符串与一个或另一个序列匹配,并且必须至少匹配其中一个。

对于and,我了解到它可以通过以下方式完成:

(?=one)(?=other)

OR有这样的东西吗?

我正在使用Java,Matcher和Pattern类。

5 个答案:

答案 0 :(得分:4)

一般来说,关于正则表达式,你绝对应该在这里开始进入正则表达式仙境:Regex tutorial

目前需要的是|(竖线字符)

要匹配字符串oneother,请使用:

(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)

您可以使用管道分开:

Pattern.compile("regexp1|regexp2");

有关几个简单示例,请参阅here

答案 3 :(得分:0)

|字符用于 OR

Pattern pat = Pattern.compile("exp1|exp2");
Matcher mat = pat.matcher("Input_data");

答案 4 :(得分:0)

答案已经给出,使用管道'|'运营商。除此之外,在regexp测试器中测试正则表达式而不必运行应用程序可能很有用,例如:

http://www.regexplanet.com/advanced/java/index.html