[英]Regex with a match between quotes
我试图找到解决我的 RegEx 问题的方法,但我找不到答案。
我的目标字符串是这样的:
"Elevator" <sip:103@192.168.1.1>;tag=343483547
我希望我的匹配组是: - 电梯 - 103
但是当我使用这个正则表达式时:
"(.*)"?<sip:(\d*)@.*
然后我在第一场比赛中收到了不需要的报价。 结果是: - 电梯” - 103
我无法让它工作。 我尝试了最明显的事情,比如
"([^"]*)"?<sip:(\d*)@.*
但是第一场比赛完全消失了
我究竟做错了什么。
您正在使"
成为可选,并且.*
是贪婪匹配,直到遇到<
。
如果引号是不需要的,您可以更新它以使 " 不可选并匹配<
之前的空格。
"(.*?)"
部分也可以匹配为([^"]+)
如果要匹配 1 个或多个数字,请使用\\d+
"(.*?)" <sip:(\d+)@
正则表达式演示(单击表选项卡)
您需要考虑可选的"
和以下<
字符之间的空格。
用
"([^"]*)"?\s*<sip:(\d*)@.*
查看正则表达式演示
细节
"
- 一个"
字符([^"]*)
- 第 1 组:除"
之外的任何零个或多个字符"?
- 一个可选的"
字符\\s*
- 0+ 个空格<sip:
- <sip:
子串(\\d*)
- 第 2 组:零个或多个(用+
替换*
以匹配一个或多个)数字@.*
- @
和该行的其余部分。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.