首页 > 解决方案 > 正则表达式根据特定短语进行拆分和分组?

问题描述

我需要编写一个正则表达式,根据条款可能包含或包含的内容来拆分句子。它可能有一个或另一个或两者至少一次。

如何在 Java 中构建这个正则表达式?此外,“包含”可以是“包含”或“包含”

标签: javaregex

解决方案


您可以使用正则表达式

\b(?:may )?contains? [a-z](?:,[a-z]){2}\b

设置了大小写无关标志。

演示(单击“Java”)

Java 的正则表达式引擎执行以下操作。

\b          # match a word break (so 'dismay' is not matched)
(?:may )    # match 'may ' in a non-capture group
?           # optionally match the above non-capture group
contain     # match 'contain'
s?          # optionally match 's'
[a-z]       # match a letter
(?:,[a-z])  # match ',' then a letter in a non-capture group
{2}         # execute above non-capture group twice
\b          # match a word break (to avoid matching 'a,b,cat')

回想一下设置了大小写无关标志。


推荐阅读