正则表达式中间的字符串

时间:2013-03-17 22:52:23

标签: regex

我如何获得SIP URI的一部分? 例如,我有URI sip:username@sip.somedomain.com,我只需要username并使用[^sip:](.*)[$@]+表达式,但结果显示为username@。我如何排除匹配@

3 个答案:

答案 0 :(得分:7)

这应该做的工作

(?<=^sip:)(.*)(?=[$@])

答案 1 :(得分:1)

使用前瞻而不是实际匹配@:

^sip:(.*?)(?=@|\$)

要么使用非常奇怪的正则表达式,要么你的起始角色类是错误的。 [^sip:]匹配的任何字符都不是sip:。我也不确定$字符的用途,因为它不是SIP语法的一部分。

答案 2 :(得分:1)

如果你的正则表达式中没有前瞻(例如POSIX正则表达式缺少它们),你仍然可以匹配你最终不想返回的正则表达式中的部分字符串,如果你使用捕获组并且只抓住它其中一些的内容。

例如

^sip:(.*?)[$@]+然后只返回第一个捕获组的内容