生成正则表达式解析

时间:2015-07-17 05:15:07

标签: regex

我需要将下面的四行转换为单个正则表达式。

piece_id="E00401007758725D"
PieceID = E00401007758725D 
Piece=E00401007758725D
piece E00401007758725D

我尝试过以下方法:

[pP]iece[_]*?[iI]*[dD]* ?[=]* ?"?(?<PieceID>[A-Z0-9]{16}"?)

但我得到的输出看起来像E00401007758725D"

我按照此regex链接检查我的表情。

2 个答案:

答案 0 :(得分:2)

如果您不想捕获",请将"?移出捕获。

[pP]iece[_]*?[iI]*[dD]* ?[=]* ?"?(?<PieceID>[A-Z0-9]{16})"?

Tested

那就是说,以可选的东西结束是没用的。此外,你有不需要的方括号,那些星是不理想的。修正:

[pP]iece(?:_?[iI][dD])?\s*(?:=\s*)?"?(?<PieceID>[A-Z0-9]{16})

Tested

答案 1 :(得分:1)

此表达式匹配所有样本行

命名群组

.*[=\ ]\"?(?<pieceId>E.*)\"?

匿名组

.*[=\ ]\"?(E.*)\"?