是否有任何方法可以将组和正则表达式的*特征组合起来,像tokenizer/splitter一样.我试过这个:
my_str = "foofoofoofoo"
pattern = "(foo)*"
result = re.search(pattern, my_str)
Run Code Online (Sandbox Code Playgroud)
我希望我的团队看起来像
("foo", "foo", "foo", "foo")
Run Code Online (Sandbox Code Playgroud)
但事实并非如此.我对此感到惊讶,因为?和组功能一起工作:
my_str= "Mr foo"
pattern = "(Mr)? foo"
result = re.search(pattern, my_str)
Run Code Online (Sandbox Code Playgroud)
问题是你重复你唯一的捕获组。这意味着你只有一个括号 ==> 一个捕获组,并且该捕获组每次匹配时都会被覆盖。
有关详细信息,请参阅Regular-Expression.info 上的重复捕获组与捕获重复组。(但是捕获重复的组也不是你想要的)
因此,在您的正则表达式完成后,您的捕获组 1 将包含最后找到的“foo”。
这会给你预期的结果:
my_str = "foofoofoofoo"
pattern = "foo"
result = re.findall(pattern, my_str)
Run Code Online (Sandbox Code Playgroud)
结果是一个列表['foo', 'foo', 'foo', 'foo']
| 归档时间: |
|
| 查看次数: |
1056 次 |
| 最近记录: |