gpt4 book ai didi

python - 元字符和反斜杠在这里做什么?

转载 作者:行者123 更新时间:2023-12-01 00:27:23 24 4
gpt4 key购买 nike

我正在从一些网站学习正则表达式,但在理解元字符的用法和原始字符串中反斜杠的用法时遇到一些困难。

import re

pattern = r"(.+) \1"

match = re.match(pattern, "word word")
if match:
print ("Match 1")

match = re.match(pattern, "?! ?!")
if match:
print ("Match 2")

match = re.match(pattern, "abc cde")
if match:
print ("Match 3")

我的主要疑问是这里使用了 (.+) 以及使用了反斜杠。如果不是 1 而是 2,输出会是什么?我知道 + 表示“一次或多次重复”。

最佳答案

当你这样做时:

r"(.+) \1"

意味着\1应该与第一组捕获的内容完全匹配。它与 "abc cde" 不匹配,因为第一组捕获了 abc ,所以就像您正在匹配以下内容:re.match(r'abc abc',文本)。这叫回引用一组。

例如,您需要匹配以相同字母开头和结尾的文本:

import re

pattern = r"(\w).+\1"

match = re.match(pattern, "ABA") # OK
match = re.match(pattern, "ABC") # NO

另一个示例匹配文本,以 3 个字母开头并以相反顺序以此字母结尾

import re

pattern = r"(\w)(\w)(\w)\3\2\1"
re.match(pattern, 'ABCCBA') # OK
re.match(pattern, 'ABCCBC') # NO

注意:您只能反向引用捕获组,这意味着这是无效的(?:.+)\1 因为第一组将匹配但不会捕获任何内容,因此您无法反向引用它。

编辑

  • + 匹配一次或多次,要求至少出现一次
  • * 匹配零次或多次

ca+t 匹配 cat, caat , caaat :匹配 c 后跟至少一个 a 或more 后面跟着 t

ca+t 匹配 ct, cat , caaaaat :匹配 c 后跟零个或多个 a随后是t

关于python - 元字符和反斜杠在这里做什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58457874/

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