gpt4 book ai didi

regex - ? : Notation in Regular Expression

转载 作者:行者123 更新时间:2023-12-02 04:05:13 25 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





What is a non-capturing group in regular expressions?

(17 个回答)


5年前关闭。




对于我的一门课,我必须描述以下正则表达式:

\b4[0-9]{12}(?:[0-9]{3})\b

我知道它选择一个数字:以 4 开头,后跟 12 位数字(每个数字在 0-9 之间),然后是另外 3 位数字。

我不明白的是带分号的问号 (?:....)。我尝试在网上查找以了解这意味着什么,但我发现的链接有些困惑;我希望有人可以让我快速了解这个示例中问号的作用。

最佳答案

这将是 回答。

当您使用 (?:)这意味着 group匹配但未被捕获用于反向引用,即 非捕获团体。它不会存储在内存中供以后引用。

例如:
(34)5\1
这个正则表达式意味着您正在寻找 34其次是 5然后又是34 .当然你可以把它写成 34534但有时 captured group是一个您无法事先预测的复杂模式。

所以随便 匹配捕获组应该会再次出现。

Regex101 demo for back-referencing

替换时也使用反向引用。

例如:
([A-Z]+)[0-9]+
此正则表达式将查找 many大写字母后跟 many数字。我想用 替换整个模式找到 大写字母。

那么我会替换 使用 \1 的整个模式代表反向引用 第一 捕获的组。

Regex101 demo for replacement

如果你改成 (?:[A-Z]+)[0-9]+这将不再捕获 它,因此不能被引用回来。

Regex101 demo for non-capturing group

A live answer.

关于regex - ? : Notation in Regular Expression,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36524507/

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