要捕获引号之间的内容,包括跳过的引号,可以使用以下正则表达式:
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"
。