regex 如何使用正则表达式来获取字符串中两个特定字符“:“和“@"之间的部分?

bqjvbblv  于 2023-05-08  发布在  其他
关注(0)|答案(3)|浏览(127)

如何获取SIP URI的一部分?例如,我有一个URI sip:username@sip.somedomain.com,我只需要得到username,我使用[^sip:](.*)[$@]+表达式,但出现的结果是username@。如何从匹配@中排除?

yzuktlbb

yzuktlbb1#

这个应该可以了

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

yrwegjxp2#

使用lookahead而不是实际匹配@:

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

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

7rfyedvj

7rfyedvj3#

如果lookaheads在你的正则表达式风格中不可用(例如POSIX正则表达式缺少它们),你仍然可以匹配你的正则表达式中你最终不想返回的字符串的部分,如果你使用捕获组并且只抓取其中一些的内容。
举个例子
^sip:(.*?)[$@]+然后只返回第一个捕获组的内容

相关问题