如何用Python正则判断字符串是否包含各类引号(含特殊引号)?
常见引号字符列表及Python正则实现
一、全类型引号字符汇总
以下是人类认知中属于引号范畴的字符,涵盖普通ASCII字符和各类排版专用特殊字符:
- 普通双引号:
"(ASCII 34),Python字符串直接写",正则中直接使用" - 普通单引号:
'(ASCII 39),Python字符串若用单引号包裹需转义为\',正则中直接使用' - 左双弯引号(“):Unicode编码
\u201C,Python字符串可直接写“或"\u201C",正则中写法一致 - 右双弯引号(”):Unicode编码
\u201D,Python字符串可直接写”或"\u201D" - 左单弯引号(‘):Unicode编码
\u2018,Python字符串可直接写‘或"\u2018" - 右单弯引号(’):Unicode编码
\u2019,Python字符串可直接写’或"\u2019" - **反引号(
)**:\u0060(ASCII 96),Python字符串用```包裹时需转义为``,正则中直接使用``` - 左双角引号(«):Unicode编码
\u00AB,Python字符串可直接写«或"\u00AB" - 右双角引号(»):Unicode编码
\u00BB,Python字符串可直接写»或"\u00BB" - 左单角引号(‹):Unicode编码
\u2039,Python字符串可直接写‹或"\u2039" - 右单角引号(›):Unicode编码
\u203A,Python字符串可直接写›或"\u203A" - 全角双引号("):Unicode编码
\uFF02,Python字符串可直接写"或"\uFF02" - 全角单引号('):Unicode编码
\uFF07,Python字符串可直接写'或"\uFF07"
二、Python正则判断实现
只需将所有目标引号字符放入正则字符集[]中,即可快速判断字符串是否包含任意类型的引号。
代码示例:
import re def contains_any_quote(input_str): # 正则字符集包含所有上述引号类型,使用原始字符串避免转义干扰 quote_regex = re.compile(r"['\"`“”‘’«»‹›"']") # search方法匹配到任意引号则返回True,否则False return bool(quote_regex.search(input_str)) # 测试示例 test_cases = [ '带普通单引号的字符串', "带普通双引号的字符串", '`带反引号的字符串`', '“带左双弯引号的字符串”', '‘带左单弯引号的字符串’', '«带双角引号的字符串»', '全角"双引号测试"', '无引号的纯文本内容' ] for case in test_cases: print(f'字符串「{case}」包含引号:{contains_any_quote(case)}')
注意事项:
- 使用Python原始字符串
r""定义正则表达式,可避免字符串层面的转义冲突 - 若需匹配成对出现的引号(如左弯引号对应右弯引号),需单独编写分组匹配逻辑,上述代码仅用于判断是否存在任意引号
内容的提问来源于stack exchange,提问作者PurpleVermont
相关产品推荐
相关产品推荐

