我在文件中有一行可以有2种格式:
/begin MEASUREMENT XXX.YYYY "Status ASC"
和
/begin MEASUREMENT XXXX "Status ASC"
我想写一个与第一种格式不匹配但可以匹配第二种格式的表达式,可以从第二种格式给我XXXX。
我尝试了下面的表达,但无法得到理想的结果:
/begin\s+MEASUREMENT (\w+)
我的正则表达式可以做些什么改变?
在\w+
之后你可能需要一个空格:
/begin\s+MEASUREMENT (\w+)(?!\S)
/begin\s+MEASUREMENT (\w+)(?=\s|$)
/begin\s+MEASUREMENT (\w+)(?:\s|$)
如果下一个字符不是非空格,那么(?!\S)
是一个负面的预测,它会使匹配失败。它与(?=\s|$)
的意义相同,(?:\s|$)
是一个正向前瞻,需要在当前位置右侧立即使用空格或字符串结尾。 \b
是后一个正则表达式的消费变体(即空格,如果匹配,将在整个匹配中着陆),但是因为你之前捕获了这个词,所以它应该不是问题。