gpt4 book ai didi

regex - 缺少后视的解决方法?

转载 作者:行者123 更新时间:2023-12-01 23:48:11 25 4
gpt4 key购买 nike

回答another user's question我拼凑了以下正则表达式来匹配字符串中的数字。

\b[+-]?[0-9]+(\.[0-9]+)?\b

在提供我的答案后,我注意到,由于\b 与句点字符相匹配,在数字序列中有多个句点的情况下,我得到了不需要的匹配项。例如 "2.3.4" 将返回匹配 "2.3""4"

负面的前瞻和后视可以帮助我,给我一个像这样的正则表达式:

\b(?<!\.)[+-]?[0-9]+(\.[0-9]+)?\b(?!\.)

...除了出于某些未知原因,VBScript Regex(以及扩展名 VBA)不支持后视。

是否有一些变通方法可以让我确认匹配开始时的单词边界不是句点而不将其包含在匹配中?

最佳答案

也许你不需要回头看看。如果您能够提取特定的捕获组而不是整个匹配项,那么您可以使用:

(?:[^.]|^)\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)

关于regex - 缺少后视的解决方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28091194/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com