我需要将下面的四行转换为单个正则表达式。
piece_id="E00401007758725D"
PieceID = E00401007758725D
Piece=E00401007758725D
piece E00401007758725D
我尝试过以下方法:
[pP]iece[_]*?[iI]*[dD]* ?[=]* ?"?(?<PieceID>[A-Z0-9]{16}"?)
但我得到的输出看起来像E00401007758725D"
我按照此regex链接检查我的表情。
答案 0 :(得分:2)
如果您不想捕获"
,请将"?
移出捕获。
[pP]iece[_]*?[iI]*[dD]* ?[=]* ?"?(?<PieceID>[A-Z0-9]{16})"?
那就是说,以可选的东西结束是没用的。此外,你有不需要的方括号,那些星是不理想的。修正:
[pP]iece(?:_?[iI][dD])?\s*(?:=\s*)?"?(?<PieceID>[A-Z0-9]{16})
答案 1 :(得分:1)
此表达式匹配所有样本行
命名群组
.*[=\ ]\"?(?<pieceId>E.*)\"?
匿名组
.*[=\ ]\"?(E.*)\"?