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

问题描述 投票:3回答:2

嗯,我在文本中有像1556278013708或34566这样的数字。其中一些后跟“例如1556278013708”

我不需要数字后跟“。所以我尝试(\ d +)(?!“)但除最后一位数字外,它仍与thoose数字匹配-155627801370如何使不使用“之后”捕获数字?如果34567-好的,我需要它,如果34567“,则不需要任何部分。

php regex pcre
2个回答
3
投票

您可以改为使量词为所有格-这样,一旦引擎匹配了所有数字,一旦看到负前瞻失败,整个匹配将完全失败,而不是尝试回溯:

\d++(?!")

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

((请注意,如果whole match是这些数字,则无需捕获组,只需提取整个匹配项)


1
投票

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

\d+\b(?!")

尽管在PCRE中使用possessive quantifier效率更高,但是此正则表达式可以在其他正则表达式平台中使用,例如Javascript或Python,也不支持++

RegEx Demo

© www.soinside.com 2019 - 2024. All rights reserved.