【发布时间】:2018-11-21 17:12:00
【问题描述】:
我知道这个陈旧的主题,并且我阅读了相关答案...
但是,我会问...
我有下一种格式的输入字符串:
3#0.01, 2#0.5, 1#-10, -2#~
所以这是一个用逗号分隔的值列表。
我可以用下一个表达式捕获所有值:
(([-+]?\d+)#([-+]?\d*\.?\d+|~))+
一切正常。
但如果输入字符串中出现任何错误,我希望不匹配,例如:
MISTAKE3#0.01, 2#0.5, 1#-10, -2#~AND_HERE_MISTAKE_TOO
不幸的是 ^ 和 $ 符号在这里没有帮助。
所以我的问题是:如果输入字符串的某些部分无效,我该如何停止匹配。
谢谢。
这里是 sn-p:https://regex101.com/r/Xih0Qk/2
【问题讨论】:
-
试试
(([-+]?\b\d+)#([-+]?\d*\.?\d+|~\B))+ -
Wiktor,感谢您的尝试。但是,不幸的是,没有。
-
那么,您只想在验证整个字符串后才将它们全部匹配? regex101.com/r/Xih0Qk/3 之类的东西?
-
Wiktor,这正是我想要的。
-
Wiktor,wielkie dzięki,如果我猜到了 ;)
标签: .net regex lookahead lookbehind