合。 CORP。 INC。正则表达式

时间:2009-06-08 21:00:40

标签: java regex

这是我第一次使用正则表达式而且我一直在尝试使用符合以下内容的正则表达式:

  • apple
  • apple inc。
  • apple co。
  • apple corp。

但不匹配:

  • INC。苹果
  • CO。苹果
  • apple co。 INC。
  • apple corp。 INC。
  • apple inc。股份有限公司
  • 等......

这是我到目前为止(苹果)\ s(inc | corp | co)。$

认为你可以提供帮助:)

编辑:它需要在Java中工作。 java是否有自己的正则表达式语法?

3 个答案:

答案 0 :(得分:3)

你快到了:

^apple(?:\s(?:inc|co|corp)\.)?$

请注意,如果您希望regexp不区分大小写,则在构造模式时必须传递CASE_INSENSITIVE标志,或者将(?i)添加到模式中。

答案 1 :(得分:1)

尝试这样的事情:

^apple\s?(inc|corp|co)?\.?$

小心句点(。)因为它们是通配符(在它们前面放一个反斜杠)。

?意味着不需要

^表示行的开头

$表示行尾

点击此处查看更完整的说明:http://www.anaesthetist.com/mnm/perl/Findex.htm

答案 2 :(得分:1)

试试这个:

(?<!(?:inc|co|corp)\.\s)apple(?:\s(?:inc|co|corp)\.)?

它使用负向lookbehind (?<! )来阻止前缀,以及非捕获组(?: )来放弃不必要的反向引用。

.已转义为\.,因为它是一个正则表达式符号,意为“任何字符”。

您使用的$表示行尾 - 所以除非您只想在字符串的末尾匹配,否则您不需要它。
但是,如果您 专门搜索整个字符串为“apple inc”。 (等)然后你可以保留$并用^替换负面的lookbehind以简化表达式:

^apple(?:\s(?:inc|co|corp)\.)?$