正则表达式与 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,所以这就是您的结果不同的原因。
我正在做一个小的正则表达式来捕获数字之前的所有文本。 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,所以这就是您的结果不同的原因。