回答另一位用户的问题 https://stackoverflow.com/q/28044217/3725745我将下面的正则表达式组合在一起来匹配字符串中的数字。
\b[+-]?[0-9]+(\.[0-9]+)?\b
在提供答案后,我注意到,如果由于 \b 与句点字符匹配而导致一系列数字中包含多个句点,则我会得到不需要的匹配。例如"2.3.4"
将返回匹配项"2.3"
and "4"
.
负面的前瞻和后瞻可以在这里帮助我,给我一个像这样的正则表达式:
\b(?<!\.)[+-]?[0-9]+(\.[0-9]+)?\b(?!\.)
...除了由于某些未知原因 VBScript Regex(以及扩展 VBA)不支持lookbehind。
是否有一些解决方法可以让我确认比赛开始时的单词边界不是句点而不将其包含在比赛中?
也许你不需要回头看。如果您能够提取特定的捕获组而不是整个匹配项,那么您可以使用:
(?:[^.]|^)\b([+-]?([0-9]+(\.[0-9]+)))\b(?!\.)
将匹配:
2.5
54.5
+3.45
-0.5
不会匹配:
1.2.3
3.6.
.3.5
- 捕获组1将输出整数和符号
- 捕获组2将输出整数
- 捕获组 3 将输出分数(就像原始表达式中的捕获组 1 一样)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)