python - 多次匹配任何字符,但在给定字符处停止

标签 python regex

我正在编写一个正则表达式,用于识别字符串中的命令。我有三个可能的单词,命令可以以它们开头,它们总是以分号结尾。

我相信正则表达式模式应该看起来像这样:

(command1|command2|command3).+;

我发现的问题是,由于 . 匹配任何字符并且 + 告诉它匹配一个或多个,它会直接跳过 a 的第一个实例分号并继续。

有没有办法让它在遇到分号的第一个实例时停止?除了 . 之外,还有什么我应该改用的吗?

最佳答案

您面临的问题是:(command1|command2|command3).+;+ 是贪婪的,这意味着它会匹配所有内容,直到最后一个值。

要解决此问题,您需要使其成为非贪婪的,为此您需要添加 ? 运算符,如下所示:(command1|command2|command3)。 +?;

仅供引用,* 运算符也是如此。添加 ? 将使其成为非贪婪的。

关于python - 多次匹配任何字符,但在给定字符处停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13005815/

相关文章:

python - 如何使用 flask + Gevent-socketio 制作 werkzeug/自定义错误页面

javascript - Tornado :包含缩小的 javascript 的 UIModule

regex - 替换所有不跟具体的换行符

python - Pandas 在 python Pandas 数据框中获取两行之间交集的方法

Python - PyQt5 - 如何显示 QMenu 和子菜单操作的状态提示

Python re.sub() 行首锚定

python re.split 前瞻模式

python - 如何使用正则表达式搜索出现次数一定的字符串?

regex - 如果连续存在两个以上空格,请删除字符串中的空格

python heapq源码_siftdown