abc的正则表达式,后跟def,然后是ghi,还有单个单词

时间:2019-01-31 20:01:46

标签: java regex

我想要一个正则表达式,以便我想要

abc,后跟def,然后是ghi,并且中间可以有空格。

accept:abcdefghi,abc def ghi,单个abc,def,ghi也是如此。

如何在regex java中实现。

我使用了((abc)?[\s,،]*(def)?[\s,،]*(ghi\s*\d+)?(jkl\s*\d{9})?)

这给出了结果,但是对于像这样的否定测试:

zksdfhhoiopokpjhhddfddfdfd

让我对空间相匹配。

结果 .matches()方法:假 .lookingAt()方法:真 显示6场比赛  k l m n o in https://www.freeformatter.com/java-regex-tester.html

1 个答案:

答案 0 :(得分:0)

我认为您可能正在寻找带有可选部件的嵌套分组结构,或者列出单个部件的替代方案。

使用带有反向引用的否定前瞻来检查以下内容是否不是第1组中捕获的内容。正则表达式的设置可能是:

(abc(?:[\h,]*def(?:[\h,]*ghi)?)?|(?:abc|def|ghi))(?!\h+\1\b)

这将首先匹配abc,然后匹配一个可选的非捕获组(?:...)?,它本身也包含一个可选的非捕获组。如果不匹配,则交替|针对各个匹配检查。

请注意,\s也匹配换行。我使用\h来匹配水平空白字符。

Regex demo | Java demo