Regex 正则表达式字符的用途

Regex 正则表达式字符的用途,regex,Regex,我遇到了一个带有?:字符的正则表达式,例如: (?:\s*) 因此,这将匹配0个或更多空白字符,但我在任何地方都找不到?:的用途。我知道如果案例是:?”,:将是可选的,但是?:有什么用呢 (x) 匹配“x”并记住匹配,如下例所示 显示。括号称为捕获括号 模式/(foo)(bar)\1\2/中的“(foo)”和“(bar)”匹配和 记住字符串“foobar foobar”中的前两个单词。\1 模式中的和\2匹配字符串的最后两个单词。注意\1, \2,\n用于正则表达式的匹配部分。代替 正则表达式

我遇到了一个带有
?:
字符的正则表达式,例如:

(?:\s*)
因此,这将匹配0个或更多空白字符,但我在任何地方都找不到
?:
的用途。我知道如果案例是
:?”
将是可选的,但是
?:
有什么用呢

(x) 匹配“x”并记住匹配,如下例所示 显示。括号称为捕获括号

模式/(foo)(bar)\1\2/中的“(foo)”和“(bar)”匹配和 记住字符串“foobar foobar”中的前两个单词。\1 模式中的和\2匹配字符串的最后两个单词。注意\1, \2,\n用于正则表达式的匹配部分。代替 正则表达式的一部分必须使用语法$1、$2、$n,例如:'bar 替换(/(…)(…)/,“$2$1”)

(?:x)匹配“x”,但不记得匹配。括号是 调用非捕获括号,并允许您定义子表达式 正则表达式运算符使用。< /强>考虑示例 表达式/(?:foo){1,2}/。如果表达式是/foo{1,2}/,则{1,2} 字符将仅应用于“foo”中的最后一个“o”。和 非捕获括号,{1,2}适用于整个单词“foo”

这是一场比赛,但不要捕捉。在正则表达式中,处理
中的所有内容都被认为是公平的匹配和捕获游戏。区别在于结果数据

为了使用它,可能需要验证匹配模式是否存在;但人们并不想要组成这场比赛的所有材料

为什么?

假设有一条规则,用户必须在电话号码中添加破折号,例如
303-555-1234
。通过使用match而不是capture,我们可以要求使用破折号进行匹配,但我们可以提取只将数字保存到数据库中的捕获

(\d\d\d)(?:-)(\d\d\d)(?:-)(\d\d\d\d)

因此,我们需要完全匹配上述内容,但当我们提取捕获时,我们只得到数字

Match 0 : 303-555-1234
Match 1 : 303
Match 2 : 555
Match 3 : 1234
我认为这是一种为匹配提供锚定的方法,使其完整,但不需要所有数据


当使用option仅捕获
中的所有内容,但将任何非括号保留在匹配项之外时,也会发现类似的情况。

您是否尝试阅读有关regex的教程?搜索实际单词通常会得到结果
冒号问号regex
@CasimiritHippolyte请提供序列?:的链接,我很难找到它。你的方法不对,与其一个接一个地解码正则表达式模式的符号,不如阅读教程。这样你就不会再花时间去搜索了。