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

技术问询:如何断言字符仅出现一次及编写匹配特定格式的正则表达式

问题1:断言某个字符在目标内容中仅出现一次

有两种实用方法:

  • 字符串计数法:直接统计目标字符的出现次数,判断是否等于1。以Python为例:
    content = "测试内容a测试"
    target_char = "a"
    assert content.count(target_char) == 1
    
  • 正则匹配法:用正则锚定整个内容,确保目标字符仅出现一次。比如要断言$仅出现一次:
    ^[^$]*\$[^$]*$
    
    说明:^和$锁定整个内容范围,[^$]*匹配任意非$的字符,中间的\$是唯一的目标字符,只有当目标字符仅出现一次时才会匹配成功。
问题2:匹配$Hi!$但不匹配$$Hi!$$的正则表达式

你当前使用的\$(.+)\$会匹配$$Hi!$$,是因为正则默认贪婪匹配,会抓取第一个$到最后一个$之间的内容,且未限制$的前后不能有额外的$。以下是两种解决方案:

方案1:匹配独立的单$包裹内容

(?<!\$)\$(.+?)\$(?!\$)

解释:

  • (?<!\$):负向回顾断言,保证当前匹配的$前面没有其他$
  • \$:匹配单个$
  • (.+?):非贪婪模式匹配中间的内容,避免跨多个$匹配
  • \$:匹配单个$
  • (?!\$):负向前瞻断言,保证当前匹配的$后面没有其他$

方案2:精确匹配整个字符串为单$包裹内容

如果需要严格限制整个字符串就是单$包裹的内容(比如不匹配abc$Hi!$def这类带额外字符的情况),可以使用:

^(?<!\$)\$(.+?)\$(?!\$)$

通过^和$锚定整个字符串,确保没有多余字符。


内容的提问来源于stack exchange,提问作者Mr.Price

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 09:12:11