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

正则表达式:匹配包含指定文本的特定字符间内容

匹配包含指定字符的大括号内容解决方案

嘿,这个正则需求很常见!你要从字符串里精准匹配被{}包裹且内部包含字符B的项,关键是要防止正则跨大括号贪婪匹配,下面是具体的实现方法:

核心正则表达式

\{[^{}]*B[^{}]*\}

正则各部分解释

  • \{:转义匹配左大括号(因为{在正则里是特殊元字符,必须转义才能匹配字面量)
  • [^{}]*:匹配任意数量非大括号的字符,确保我们只在当前大括号内部匹配,不会跑到其他括号里
  • B:精确匹配你指定的目标字符
  • [^{}]*:继续匹配当前大括号内剩余的非大括号字符
  • \}:转义匹配右大括号

代码示例(以Python为例)

假设你的原始字符串是:

text = "{sometext1Asometext2};{sometext3Bsometext4};{sometext5Csometext6}"

匹配单个结果

import re

pattern = r"\{[^{}]*B[^{}]*\}"
match_result = re.search(pattern, text)

if match_result:
    print(match_result.group())  # 输出: {sometext3Bsometext4}

匹配所有符合条件的项(如果有多个)

如果字符串里有多个包含B的大括号项,可以用findall一次性获取所有结果:

matches = re.findall(pattern, text)
print(matches)  # 会返回所有包含B的大括号内容组成的列表

为什么不用.*?

很多新手会尝试用\{.*B.*\},但这会触发贪婪匹配:它会从第一个{开始,一直匹配到最后一个},把整个字符串都包含进去,完全达不到你要的精准匹配单个括号项的效果。而[^{}]*限定了只能在当前大括号内部匹配,完美解决这个问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 03:07:31