我正在编写一个正则表达式,用于识别字符串中的命令。我有三个可能的单词,命令可以以它们开头,它们总是以分号结尾。
我相信正则表达式模式应该看起来像这样:
(command1|command2|command3).+;
我发现的问题是,由于 .
匹配任何字符并且 +
告诉它匹配一个或多个,它会直接跳过 a 的第一个实例分号并继续。
有没有办法让它在遇到分号的第一个实例时停止?除了 .
之外,还有什么我应该改用的吗?
最佳答案
您面临的问题是:(command1|command2|command3).+;
是 +
是贪婪的,这意味着它会匹配所有内容,直到最后一个值。
要解决此问题,您需要使其成为非贪婪的,为此您需要添加 ?
运算符,如下所示:(command1|command2|command3)。 +?;
仅供引用,*
运算符也是如此。添加 ?
将使其成为非贪婪的。
关于python - 多次匹配任何字符,但在给定字符处停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13005815/