正则表达式需求:提取TXF+3行中第2个+至首个'间的内容
问题解决:提取指定区间文本的正则修正
问题说明
需从以TXF+3开头的行中,提取第2个+到第一个'之间的内容。
示例输入:
ERC+21236:EC' TXF+3:::::M:2+THERE IS NO ITEM IN THE PRINTER DELIVERY'+Printer jammed'+'No Paper' UNT+5+1'
原尝试正则:
TXF\+3:::::M:\w+\+(?<Y>.*)'
实际匹配结果(贪婪匹配到末尾,包含多余内容):
THERE IS NO ITEM IN THE PRINTER DELIVERY'+Printer jammed'+'No Paper' UNT+5+1
预期匹配结果:
THERE IS NO ITEM IN THE PRINTER DELIVERY
修正方案
原正则中.*是贪婪匹配模式,会尽可能匹配到最后一个'甚至跨行内容。只需将其替换为[^']*——[^']表示匹配除单引号'之外的任意字符,遇到第一个'就会停止匹配。
修正后的正则:
TXF\+3:::::M:\w+\+(?<Y>[^']*)'
验证效果
用修正后的正则匹配示例输入,将精准捕获第2个+到第一个'之间的文本,得到预期结果:THERE IS NO ITEM IN THE PRINTER DELIVERY。
内容的提问来源于stack exchange,提问作者Borra. Bhaskar
相关产品推荐
相关产品推荐

