如何不使用正则表达式负前瞻捕获整个组
how to not capture entire group with regex negative lookahead
我在文本中有 1556278013708
或 34566
这样的数字。其中一些后跟"
,例如1556278013708"
我不需要数字后跟 "
,所以我尝试了 (\d+)(?!")
,但这仍然匹配那些数字,只是没有最后的数字,例如 155627801370
如何让 "
之后不捕获整个数字?
例如,34567
- 全部匹配
例如,34567"
- 匹配 none 个
您可以改为使量词占有所有格 - 这样,一旦引擎匹配所有数字,一旦它发现否定先行失败,整个匹配将完全失败,而不是尝试回溯:
\d++(?!")
https://regex101.com/r/6bIqdI/1
(注意,如果整个匹配是那些数字,则不需要捕获组,只需提取整个匹配)
或者,放置单词边界也可以:
\d+\b(?!")
虽然在 PCRE 中使用 效率更高,但此正则表达式可用于其他正则表达式平台,例如 Javascript 或 Python 也不支持 ++
.
我在文本中有 1556278013708
或 34566
这样的数字。其中一些后跟"
,例如1556278013708"
我不需要数字后跟 "
,所以我尝试了 (\d+)(?!")
,但这仍然匹配那些数字,只是没有最后的数字,例如 155627801370
如何让 "
之后不捕获整个数字?
例如,34567
- 全部匹配
例如,34567"
- 匹配 none 个
您可以改为使量词占有所有格 - 这样,一旦引擎匹配所有数字,一旦它发现否定先行失败,整个匹配将完全失败,而不是尝试回溯:
\d++(?!")
https://regex101.com/r/6bIqdI/1
(注意,如果整个匹配是那些数字,则不需要捕获组,只需提取整个匹配)
或者,放置单词边界也可以:
\d+\b(?!")
虽然在 PCRE 中使用 ++
.