我正在尝试使用正则表达式来解析如下所示的字符串:
/subject=hello±@text=something that may contain\@hello.com or a normal sla/sh±@date=blah/somethingelseI don't want to capture after the first/
成:
subject = hello
text =something that may contain\@hello.com or a normal sla/sh
date = blah
理想情况下,我希望能够在第一个'/'之后将字符串拆分为类似'±@'的字符串 - 并且只按该顺序排列该组合。
我环顾四周,当下有以下内容:
([^/±@,= ]+)=([^±@,= ]+)
但这只与'±@'不匹配 - 它匹配@或±。
它也无法应对逃脱的@。 (相反,我得到:text= something that may contain\
)。
有更好的方法吗?
由于
答案 0 :(得分:0)
试试这个:
(?:\/|(?<=±@))(.*?=.*?)(?:±@|$|\/(?!.*±@))
请参阅live demo
一个重要的部分是在尾部斜杠/(?!.*±@)
之后的负面展示 - 这意味着&#34;匹配斜杠,但仅当±@
没有出现在&#34;之后的输入中。
鉴于此输入:
/subject=hello±@text=something that may contain\@hello.com or a normal sla/sh±@date=blah/somethingelseI don't want to capture after the first/
它产生第1组为的匹配:
subject=hello
text=something that may contain\@hello.com or a normal sla/sh
date=blah