【发布时间】:2021-12-28 21:09:03
【问题描述】:
我正在尝试匹配以下模式:
bla bla bla lorem ipsum bla bla email=destiney41@leuschke.org name!=Foo Bar
这是我目前的做法:
(email|name)+\s*(>=|<=|>|<|=|!=)\s*([^ !=<>]+)
因为我总是知道键(电子邮件、姓名),所以第一部分很简单,但我无法将值与空格匹配。我在这里错过了什么?
匹配的结尾应该是新的键 + 运算符组合的开始。
【问题讨论】:
-
你如何描述/定义一场比赛的结束?
-
“我无法用空格匹配值” 因为您在倒置集
[^ !=<>]中明确包含了一个空格。如果一个带有空格的值没有被引用或转义,你怎么知道它什么时候结束? -
匹配的结尾应该是新的键+操作符组合的开始。
-
然后试试
(email|name)\s*([><]=?|!?=)\s*(.*?)(?=\s*(?:(?:email|name)\s*(?:[><]=?|!?=)|$))(见demo)。 -
完美运行,谢谢。随意提交答案,因为就是这个! :)