4

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

因为and我了解到它可以通过以下方式完成:

(?=one)(?=other)

OR有这样的东西吗?

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

4

5 回答 5

9

一般来说,关于正则表达式,你绝对应该从这里开始你的正则表达式仙境之旅:正则表达式教程

当前需要的是|(管道字符)

要匹配字符串oneOR other,请使用:

(one|other)

或者如果您不想存储匹配项,只需简单地

one|other

具体到Java这篇文章很擅长解释这个主题

您将不得不以这种方式使用您的模式:

//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 特定检查器),它们让您的生活更轻松!

于 2012-11-28T10:32:37.390 回答
4

“或”运算符拼写|为 ,例如one|other

文档中列出了所有运算符。

于 2012-11-28T10:32:53.093 回答
2

您可以这样用管道分开:

Pattern.compile("regexp1|regexp2");

有关几个简单的示例,请参见此处。

于 2012-11-28T10:32:57.540 回答
1

使用OR|字符

Pattern pat = Pattern.compile("exp1|exp2");
Matcher mat = pat.matcher("Input_data");
于 2012-11-28T10:42:08.010 回答
0

答案已经给出,使用管道'|' 操作员。除此之外,在 regexp 测试器中测试您的 regexp 而无需运行您的应用程序可能会很有用,例如:

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

于 2012-11-28T10:45:55.637 回答