gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:30:26 25 4
gpt4 key购买 nike

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

最佳答案

您可以匹配第一个捕获组中的作业语句,并使用 \G 获取第二组中的参数:

(?:(//\w+\s+JOB(?: \w+)?)\h*|\G(?!^)),(\w+=\w+)

解释

  • (?: 非捕获组
    • ( 捕获组 1
      • //\w+\s+JOB 匹配//, 1+ word chars and JOB
      • (?:\w+)? 匹配可选参数
    • )\h*` 关闭组并匹配 0+ 个水平空白字符
    • | 或者
    • \G(?!^) 在上一场比赛结束时断言位置,而不是在开始处
  • ),关闭非捕获组并匹配,
  • ( 捕获第 2 组
    • \w+=\w+ 匹配 1+ 个单词 = 1 + 个单词
  • ) 关闭群组

在Java中

String regex = "(?:(//\\w+\\s+JOB(?: \\w+)?)\\h*|\\G(?!^)),(\\w+=\\w+)";

Regex demo | Java demo

关于java - 正则表达式继续匹配相似的模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57789029/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com