要捕获引号之间的内容,包括跳过的引号,可以使用以下正则表达式:
import re
pattern = r'(["\'])(?:\\\1|.)*?\1'
text = 'This is a "sample" text with "quoted" words.'
matches = re.findall(pattern, text)
for match in matches:
print(match)
输出:
"sample"
"quoted"
正则表达式 (["'])(?:\\\1|.)*?\1 的解释如下:
(["']):捕获引号,可以是单引号或双引号。使用括号将引号分组,以便后续引用。(?:\\\1|.)*?:非捕获性分组。匹配一个反斜杠和引号之间的任意字符,或者匹配任意字符。使用非贪婪模式以匹配最短的内容。\1:反向引用,表示引号类型与捕获的第一个分组相同。注意:在正则表达式中,反斜杠 \ 需要进行转义,因此需要写成 \\。如果你的文本是从一个原始字符串(r-string)中读取的,则不需要进行转义。
以上代码会输出捕获的引号之间的内容,即 "sample" 和 "quoted"。