re.search中的group(0)的确切定义是什么?
有时搜索会变得复杂,我想知道定义中的group(0)值是多少?
仅举例说明混淆的来源,请考虑这种匹配。打印结果仅为def。因此,在这种情况下,group(0)不会返回整个匹配项。
m = re.search('(?<=abc)def', 'abcdef')
>>> m.group(0)
def
Run Code Online (Sandbox Code Playgroud)
match_object.group(0)表示已选择match_object的整个部分。
另外,可以通过将组(0)与组(1),组(2),组(3),...,组(n)进行比较来解释。Group(0)查找整个匹配表达式。然后,要确定更多的匹配位置,请使用括号:group(1)表示第一个括号对找到匹配表达式1,group(2)表示第二个下一个括号对找到匹配表达式2,依此类推。在每种情况下,左括号都通过使用最远的右括号来形成下一个括号对。这听起来令人困惑,这就是为什么下面有一个示例。
但是您需要区分'(?<= abc)'的括号的语法。这些同形异义词具有不同的句法含义,即定位“?<=”所约束的内容。因此,您的主要问题是您不知道'?<='是什么。这就是所谓的后向(look-behind),这意味着它与它所绑定的表达式后面的部分匹配。
在以下示例中,“ abc”由后向绑定。
匹配组0不需要任何括号,因为它仍然可以定位整个匹配对象。
字母'd'前面的开括号将字母'f'前面的最后一个括号括起来以形成匹配组1。
字母“ e”周围的括号定义了匹配组2。
import re
m = re.search('(?<=abc)(d(e))f', 'abcdef')
print(m.group(0))
print(m.group(1))
print(m.group(2))
Run Code Online (Sandbox Code Playgroud)
打印:
定义
| 归档时间: |
|
| 查看次数: |
8328 次 |
| 最近记录: |