gpt4 book ai didi

python - python 的正则表达式模块中 `.*` 的含义 - 我认为它意味着任何数量的东西?

转载 作者:太空宇宙 更新时间:2023-11-04 08:53:04 34 4
gpt4 key购买 nike

我身上发生了一些奇怪的事情。很长一段时间我都认为 .* 意味着任意数量的任意字符,包括什么都没有。我有两个给出不同结果的例子:

例子1

此示例按我的预期打印:

string_2 = 'SomethingStuff stuff1 ' 
my_regex = '(stuff)'
match_object = re.findall(my_regex, string_2, flags=re.I)
print match_object

输出:

['Stuff', 'stuff']

例子2

这个例子应该打印相同的,正如我目前理解的 .*,但它不是:

string_2 = 'SomethingStuff stuff1 '
my_regex = '(stuff).*' # notice the difference here
match_object = re.findall(my_regex, string_2, flags=re.I)
print match_object

输出:

['Stuff']

为什么这些不同?真的很困扰我....

最佳答案

由于您在正则表达式中使用了捕获组 (...)re.findall 应该打印与捕获中存在的模式匹配的字符团体。请注意,re.findall 应该首先优先考虑组,然后才是匹配项。因为,正则表达式中的 Stuff 出现在组中,下面的 .* 匹配所有字符直到最后一个(它包括第二个 stuff also),你的正则表达式应该只打印第一个 Stuff。如果您删除该组,它应该打印从第一个 stuff 到最后一个的所有字符。

>>> string_2 = 'SomethingStuff stuff1 '
>>> re.findall('stuff.*', string_2, flags=re.I)
['Stuff stuff1 ']

关于python - python 的正则表达式模块中 `.*` 的含义 - 我认为它意味着任何数量的东西?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33193823/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com