You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

正则表达式匹配含特殊字符的列表元素问题求助

解决正则匹配花括号内容的问题

嘿,你的正则表达式写法有问题导致匹配失败啦!原因主要有两个:

  1. {和}在正则里是特殊字符(用来定义重复次数,比如a{2}表示匹配两个a),所以必须用反斜杠转义才能匹配字面意义的花括号。
  2. 你写的{*}逻辑不对——*在正则里是量词,会匹配前面的{零次或多次,这完全不是你想要的匹配花括号内内容的逻辑。

要匹配{xxx}这种完整格式的内容,正确的正则表达式应该是r'\{[^}]*\}',拆解一下:

  • \{:转义左花括号,匹配字面的{
  • [^}]*:匹配任意不是右花括号的字符,零次或多次(这个比用.*?更高效,不会出现过度匹配的情况)
  • \}:转义右花括号,匹配字面的}

给你两种修正方案:

方案一:直接提取所有匹配内容(更简洁)

不用拆分字符串成列表,直接用findall就能一次性拿到所有符合格式的内容:

import re
# 编译正确的正则表达式
pattern = re.compile(r'\{[^}]*\}')
input_str = 'My {noun2} gave me {number1} dollar bill'
# 提取所有匹配项
matches = pattern.findall(input_str)
for item in matches:
    print(item)

方案二:保留拆分列表的逻辑

如果你一定要按单词拆分后再检查,那可以用fullmatch来判断单个单词是否完全符合{xxx}的格式:

import re
pattern = re.compile(r'\{[^}]*\}')
input_str = 'My {noun2} gave me {number1} dollar bill'
word_list = input_str.split(' ')
for word in word_list:
    # 判断当前单词是否完全匹配格式
    if pattern.fullmatch(word):
        print(word)

两种方案运行后都会输出你想要的结果:

{noun2}
{number1}

内容的提问来源于stack exchange,提问作者hsekol

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 06:33:30