我如何获得SIP URI的一部分?
例如,我有URI sip:username@sip.somedomain.com
,我只需要username
并使用[^sip:](.*)[$@]+
表达式,但结果显示为username@
。我如何排除匹配@
?
答案 0 :(得分:7)
这应该做的工作
(?<=^sip:)(.*)(?=[$@])
答案 1 :(得分:1)
使用前瞻而不是实际匹配@:
^sip:(.*?)(?=@|\$)
要么使用非常奇怪的正则表达式,要么你的起始角色类是错误的。 [^sip:]
匹配的任何字符都不是s
,i
,p
或:
。我也不确定$
字符的用途,因为它不是SIP语法的一部分。
答案 2 :(得分:1)
如果你的正则表达式中没有前瞻(例如POSIX正则表达式缺少它们),你仍然可以匹配你最终不想返回的正则表达式中的部分字符串,如果你使用捕获组并且只抓住它其中一些的内容。
例如
^sip:(.*?)[$@]+
然后只返回第一个捕获组的内容