freetext中的可选regexp组

时间:2017-06-30 13:06:25

标签: regex capture freetext

我有两种短信 - 两者都有一个穿制服的消息代码,但可能会有第二个匹配在'我需要提取的字符中,如果它在那里。

M0123 示例' \ textratext '包含两个预期匹配。

M0321 没有两场比赛的示例

匹配#1并捕获两个组但与#2不匹配:

^(?<code>M\d+).*(?<extra>'.*').*

匹配#1&amp; #2但是从未捕获过额外的组:

^(?<code>M\d+).*(?<extra>'.*')?.*

1 个答案:

答案 0 :(得分:0)

否定的角色类应该可以帮到你,比如

^(?<code>M\d+)[^']*(?:(?<extra>'.*').*)?

将第一个.*转换为[^']*会使其与第一个样本的第一个引号和第二个样本的整个字符串匹配。

注意:

  • 如果在多行环境中,您可能希望使用[^&#39; \ r \ n]来避免重叠行
  • 如果总有两个引号,您也可以使用(?<extra>'[^']*')