我有 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
提交
取消