我在文件中有一行,可以有以下两种格式:
/begin MEASUREMENT XXX.YYYY "Status ASC"
和
/begin MEASUREMENT XXXX "Status ASC"
我想写一个表达式,该表达式不匹配,但可以匹配,并且可以给我第二种格式的XXXX。
我尝试了以下表达式,但无法获得预期的结果:
/begin\s+MEASUREMENT (\w+)
我可以对正则表达式进行哪些更改?
答案 0 :(得分:2)
您可能在\w+
之后需要一个空格:
/begin\s+MEASUREMENT (\w+)(?!\S)
/begin\s+MEASUREMENT (\w+)(?=\s|$)
/begin\s+MEASUREMENT (\w+)(?:\s|$)
(?!\S)
是一个否定的超前行为,如果下一个字符不是非空格,则匹配失败。它的含义与(?=\s|$)
相等,它是一个正向前行,需要在当前位置的右边紧跟一个空格或字符串结尾。 (?:\s|$)
是后一种正则表达式的一个很繁琐的变体(即,如果匹配,则空格将在整个匹配项中降落),但是由于您之前捕获的是单词,所以这不是问题。
答案 1 :(得分:1)