我有 JCL 语句与正则表达式模式匹配 该语句如下所示//name JOB optionalParam,keyword=param,keyword=param,keyword=param实际的声明如下//ADBB503 JOB ,MSGCLASS=2,CLASS=P
//ABCD JOB Something,MSG=NTNG,CLASS=ABC我尝试过使用正则表达式来分组匹配,但是最后一个关键字和参数将有 n 次,我需要继续匹配直到它存在。String regex= (\/\/)(\w+)(\s+)(JOB)(\s+)(\w+)?(,)([\w+=\w+]+);我的试用位于下面给出的链接 https://regex101.com/r/gUyRMV/1我面临的错误是只有一个关键字=参数匹配。需要匹配N个关键字和参数。
1 回答
小怪兽爱吃肉
TA贡献1852条经验 获得超1个赞
您可以匹配第一个捕获组中的作业语句,并使用它\G
来获取第 2 组中的参数:
(?:(//\w+\s+JOB(?: \w+)?)\h*|\G(?!^)),(\w+=\w+)
解释
(?:
非捕获组//\w+\s+JOB
匹配//
, 1+ 个单词字符和JOB
(?: \w+)?
匹配可选参数(
捕获组 1)
\h*` 关闭组并匹配 0+ 水平空白字符|
或者\G(?!^)
在上一场比赛结束时而不是开始时断言位置)
, 关闭非捕获组并匹配,
(
捕获组2\w+=\w+
匹配 1+ 单词字符=
1 + 单词字符)
封闭组
在java中
String regex = "(?:(//\\w+\\s+JOB(?: \\w+)?)\\h*|\\G(?!^)),(\\w+=\\w+)";
添加回答
举报
0/150
提交
取消