匹配单词没有点与Python正则表达式

问题描述 投票:1回答:2

我在文件中有一行可以有2种格式:

/begin MEASUREMENT XXX.YYYY "Status ASC" 

/begin MEASUREMENT XXXX "Status ASC" 

我想写一个与第一种格式不匹配但可以匹配第二种格式的表达式,可以从第二种格式给我XXXX。

我尝试了下面的表达,但无法得到理想的结果:

/begin\s+MEASUREMENT (\w+)

我的正则表达式可以做些什么改变?

python regex grouping word
2个回答
2
投票

\w+之后你可能需要一个空格:

/begin\s+MEASUREMENT (\w+)(?!\S)
/begin\s+MEASUREMENT (\w+)(?=\s|$)
/begin\s+MEASUREMENT (\w+)(?:\s|$)

查看regex demoRegulex graph

enter image description here

如果下一个字符不是非空格,那么(?!\S)是一个负面的预测,它会使匹配失败。它与(?=\s|$)的意义相同,(?:\s|$)是一个正向前瞻,需要在当前位置右侧立即使用空格或字符串结尾。 \b是后一个正则表达式的消费变体(即空格,如果匹配,将在整个匹配中着陆),但是因为你之前捕获了这个词,所以它应该不是问题。


1
投票

您可以使用单词边界(?!和负向前导/begin\s+MEASUREMENT (\w+)\b(?!\.) 来断言右边的不是点:

Regex demo

qazxswpoi

© www.soinside.com 2019 - 2024. All rights reserved.