正则表达式继续匹配相似的模式

我有 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个关键字和参数。


繁花不似锦
浏览 60回答 1
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+)";正则表达式演示| Java演示
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java