首页 > 解决方案 > 使用 Python 正则表达式匹配不带点的单词

问题描述

我在一个文件中有一行可以有以下两种格式:

/begin MEASUREMENT XXX.YYYY "Status ASC" 

/begin MEASUREMENT XXXX "Status ASC" 

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

我尝试了以下表达式,但无法获得所需的结果:

/begin\s+MEASUREMENT (\w+)

我可以在我的正则表达式中进行哪些更改?

标签: pythonregexgroupingword

解决方案


您可能需要一个空格后\w+

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

请参阅正则表达式演示Reglex 图

在此处输入图像描述

(?!\S)如果下一个字符不是非空格,则这是一个否定的前瞻,它会导致匹配失败。它在含义上等于(?=\s|$),一个正向前瞻,需要紧挨当前位置右侧的空格或字符串结尾。(?:\s|$)是后一个正则表达式的一个消耗性变体(即,如果匹配,空格将出现在整个匹配中),但是由于您之前捕获了这个词,所以这应该不是问题。


推荐阅读