如何不使用正则表达式负前瞻捕获整个组

how to not capture entire group with regex negative lookahead

我在文本中有 155627801370834566 这样的数字。其中一些后跟",例如1556278013708"

我不需要数字后跟 ",所以我尝试了 (\d+)(?!"),但这仍然匹配那些数字,只是没有最后的数字,例如 155627801370

如何让 " 之后不捕获整个数字?

例如,34567 - 全部匹配

例如,34567" - 匹配 none 个

您可以改为使量词占有所有格 - 这样,一旦引擎匹配所有数字,一旦它发现否定先行失败,整个匹配将完全失败,而不是尝试回溯:

\d++(?!")

https://regex101.com/r/6bIqdI/1

(注意,如果整个匹配是那些数字,则不需要捕获组,只需提取整个匹配)

或者,放置单词边界也可以:

\d+\b(?!")

虽然在 PCRE 中使用 效率更高,但此正则表达式可用于其他正则表达式平台,例如 Javascript 或 Python 也不支持 ++ .

RegEx Demo