我有以下字符串:
string x = "abc<ee:dd>\r\nHERE:we<pp>xq:zxcv<qq>";
我想写一个正则表达式来查找不在:
块中的第一个<>
。
理想情况下,我想在第一个:
那是:
string y ="abc<ee:dd>\r\nHERE"
string z = "we<pp>xq:zxcv<qq>"
如何匹配第一个:
之前的部分?
我是Regex的新手并尝试了很多,但它仍然无法正常工作。
答案 0 :(得分:0)
正则表达式很棘手......你不仅要知道要匹配什么,还要知道什么是不匹配的。对于这种情况,我在https://regex101.com/测试了这个表达式并得到了预期的结果:
^(.*<.*>.*):(.*)$/U
括号()是此处的关键,可以在冒号的两侧匹配两个不在有角度括号内的组&lt;&gt;。
答案 1 :(得分:0)
因为NSRegularExpressions没有可变长度的后视,我们需要有点创意。
以下内容应该有效:
(.*?):(?![^<]*>)(.*)
(.*?):
匹配所有字符,直到第一个冒号
(?![^<]*>)(.*)
为了接受第一个冒号,我们会做一个否定的预测,以确保没有右括号>
没有一个左括号面前。如果事实证明这是真的,我们知道这个冒号不在括号内。