正则表达式表示 abc,后跟 def,后跟 ghi 以及单个单词



我想有一个正则表达式,这样我想要

ABC 后跟 Def,后跟 GHI,任何空格都可以介于两者之间。

接受:abcdefghi,abc def ghi,个人ABC,def,GHI以及。

我怎样才能在正则表达式 java 中实现。

我用了((abc)?[s,،]*(def)?[s,،]*(ghis*d+)?(jkls*d{9})?)

这给出了结果,但对于阴性测试,例如:

zksdfhhoiopokpjhhddfddfdfd

给我匹配空间。

结果.matches() 方法:假.lookingAt() 方法: true显示 6 匹配项 K L M N O INhttps://www.freeformatter.com/java-regex-tester.html

我认为您可能正在寻找具有可选部分的嵌套分组结构或列出各个部分的交替。

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

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

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

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

正则表达式演示 |爪哇演示

最新更新