正则表达式与 python 搜索不一致

Inconsistency between regex and python search

我正在做一个小的正则表达式来捕获数字之前的所有文本。 https://regex101.com/r/JhIiG9/2

import re

regex = "^(.*?)(\d*([-.]\d*)*)$"
message = "Myteeeeext  0.366- 0.3700"
result = re.search(regex, message)
print(result.group(1))

https://www.online-python.com/a7smOJHBwp

当我 运行 这个正则表达式而不是只显示第一组 Myteeeeext 我得到 Myteeeeext 0.366- 但在 regex101 中它只显示

试试这个正则表达式,[^\d.-]+

它捕获数字之前的所有文本

import re

regex = "[^\d.-]+"
message = "Myteeeeext  0.366- 0.3700 notMyteeeeext"
result = re.search(regex, message)
print(f"'{result.group()}'")

输出:

'Myteeeeext  '

告诉我是否适合你...

您的正则表达式:

regex = "^(.*?)(\d*([-.]\d*)*)$"

不允许数字部分有任何 space,但您的搜索字符串:

message = "Myteeeeext  0.366- 0.3700"

破折号后确实有一个 space,所以这部分正则表达式:

(.*?)

匹配到第二个数字。

您给出的 regex101.com 示例中的测试字符串看起来不像 space,所以这就是您的结果不同的原因。