为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

繁花不似锦 2023-07-13 14:09:21
我有 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+)";

    正则表达式演示Java演示


    查看完整回答
    反对 回复 2023-07-13
    • 1 回答
    • 0 关注
    • 79 浏览

    添加回答

    举报

    0/150
    提交
    取消
    意见反馈 帮助中心 APP下载
    官方微信