【发布时间】:2009-06-08 21:00:40
【问题描述】:
这是我第一次使用正则表达式,我一直在尝试让正则表达式与以下内容匹配:
- 苹果
- 苹果公司
- 苹果公司
- 苹果公司
但不匹配:
- 公司。苹果
- 合作。苹果
- 苹果公司公司。
- 苹果公司公司。
- 苹果公司公司
- 等等……
这是我目前得到的 (apple)\s(inc|corp|co).$
认为你可以帮忙:)
编辑:它需要在 Java 中工作。 java是否有自己的正则表达式语法?
【问题讨论】:
这是我第一次使用正则表达式,我一直在尝试让正则表达式与以下内容匹配:
但不匹配:
这是我目前得到的 (apple)\s(inc|corp|co).$
认为你可以帮忙:)
编辑:它需要在 Java 中工作。 java是否有自己的正则表达式语法?
【问题讨论】:
你快到了:
^apple(?:\s(?:inc|co|corp)\.)?$
请注意,如果您希望您的正则表达式不区分大小写,则必须在构造模式时传递CASE_INSENSITIVE 标志或将(?i) 添加到模式中。
【讨论】:
试试这样的:
^apple\s?(inc|corp|co)?\.?$
请注意句点 (.),因为它们是通配符(在它们前面加上反斜杠)。
?表示不需要
^ 表示行首
$ 表示行尾
看这里以获得更完整的解释:http://www.anaesthetist.com/mnm/perl/Findex.htm
【讨论】:
试试这个:
(?<!(?:inc|co|corp)\.\s)apple(?:\s(?:inc|co|corp)\.)?
它使用否定的后向查看 (?<! ) 来防止前缀,加上非捕获组 (?: ) 以丢弃不必要的反向引用。
. 已转义为 \.,因为它是一个正则表达式符号,意思是“任何字符”。
您使用的 $ 表示行尾 - 因此,除非您只希望它在字符串末尾匹配,否则您不需要它。
但是,如果您正在专门搜索“apple inc”的整个字符串。 (等)然后您可以保留 $ 并用^ 替换否定的lookbehind 以将表达式简化为:
^apple(?:\s(?:inc|co|corp)\.)?$
【讨论】: