java - 正则表达式根据特定短语进行拆分和分组?
问题描述
我需要编写一个正则表达式,根据条款可能包含或包含的内容来拆分句子。它可能有一个或另一个或两者至少一次。
- MAY CONTAIN A,B,C --> (可能包含 a,b,c)
- 包含 X,Y,Z --> (包含 x,y,z)
- MAY CONTAIN A,B,C CONTAINS X,Y,Z --> (may contains a,b,c) (contains x,y,z)
如何在 Java 中构建这个正则表达式?此外,“包含”可以是“包含”或“包含”
解决方案
您可以使用正则表达式
\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')
回想一下设置了大小写无关标志。
推荐阅读
- datatables - 使用数据表的列 nowrap 不起作用
- selenium - 如何比较和验证托管在两个不同环境中的网站的内容是否相同?
- python - 如何将预编译的二进制文件添加到 python 项目(云函数 python)?
- javascript - 在 Three.js 中控制自定义几何图形的缩放
- docker - docker:来自守护进程的错误响应:驱动程序在端点 Web 上编程外部连接失败:启动用户级代理时出错:监听 tcp 0.0.0
- sql - 如何创建一个视图,排除与 CASE 语句中设置的任何条件不匹配的数据?
- node.js - Cloud Functions for Firestore:访问父集合数据
- xml - XPath 没有得到任何节点
- ios - Swift:Firestore 子集合、自定义对象和监听器
- mysql - --skip-grant-tables 选项不能执行语句