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

如何用正则表达式匹配四种To:头格式并提取指定分组?

问题解决:匹配带/不带<>的To头SIP地址及Tag

原正则的核心问题是[^<]+这部分——它会贪婪匹配所有非<的字符,导致不带<>的输入里,sip:开头的地址被这部分完全吃掉,后续捕获组自然无法匹配到目标内容。

修正后的正则表达式:

To:\s*(?:<\s*)?(?<from>sip:[^\s>]+)(?:\s*>)?\s*(?:;tag=([^\r\n;]+))?\s*

关键修改说明:

  • 移除了原表达式中导致匹配失败的[^<]+,替换为可选的<\s*,用于处理带<>的场景
  • 调整SIP地址匹配规则为sip:[^\s>]+:精准匹配从sip:开始,直到空格或>结束的内容,同时兼容带/不带<>的两种格式
  • 保留了可选的\s*>(用于闭合<>)和可选的tag捕获组逻辑

四种输入的匹配结果验证:

  • 输入:To: <sip:alice@wonderland.com:5080>;tag=myTag
    • Group1: sip:alice@wonderland.com:5080
    • Group2: myTag
  • 输入:To: <sip:alice@wonderland.com:5080>
    • Group1: sip:alice@wonderland.com:5080
    • Group2: (空,无匹配)
  • 输入:To: sip:alice@wonderland.com:5080
    • Group1: sip:alice@wonderland.com:5080
    • Group2: (空,无匹配)
  • 输入:To: sip:alice@wonderland.com:5080;tag=myTag
    • Group1: sip:alice@wonderland.com:5080
    • Group2: myTag

C#使用提示:

如果输入内容可能包含换行,可启用RegexOptions.Singleline模式;若均为单行格式,使用默认模式即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 19:17:08