我有一根线,想要匹配它的一部分。
字符串为Accept:multipart/mixedPrivacy: nonePAI: <sip:4168755400@1.1.1.238>From: <sip:4168755400@1.1.1.238>;tag=5430960946837208_c1b08.2.3.1602135087396.0_1237422_3895152To: <sip:4168755400@1.1.1.238>
我想要匹配PAI:<sip:4168755400@
空格可以是一个单词,所以我想使用.*,但是如果我使用它,它就匹配大部分字符串
该链接上的示例显示了如果我使用空格而不是.*来匹配什么
(PAI: <sip:)((?:\([2-9]\d{2}\)\ ?|[2-9]\d{2}(?:\-?|\ ?))[2-9]\d{2}[- ]?\d{4})@
该链接上的示例显示了我试图用.*实现的目标,但它只应该与PAI:
(PAI:.*<sip:)((?:\([2-9]\d{2}\)\ ?|[2-9]\d{2}(?:\-?|\ ?))[2-9]\d{2}[- ]?\d{4})@
我试过四处看看但失败了。有什么想法吗?谢谢
发布于 2020-10-29 13:52:36
匹配单个空格可以通过使用匹配空格或单词字符的字符类来更新,并重复1次或多次,以匹配至少一个事件。
请注意,您不必转义空格,在这两种情况下,您都可以使用与空格或连字符[ -]?
匹配的可选字符类。
如果只需要匹配,则可以省略两个捕获组(如果需要)。
(PAI:[ \w]+<sip:)((?:\([2-9]\d{2}\) ?|[2-9]\d{2}[ -]?)[2-9]\d{2}[- ]?\d{4})@
发布于 2020-10-29 14:07:08
正则表达式应该是
PAI:.*?(<sip:.*?@)
解释:
PAI:.*?
找到单词PAI:
,在单词后面可以是(.*)
,但是?
用来表示在找到下一个表达式之前应该尽可能少地匹配。(<sip:.*?@)
捕获组。<sip:.*?@
找到<sip:
,单词后面可以是.*?
,然后才能找到@
。https://stackoverflow.com/questions/64592023
复制相似问题