我正在查看这个子表达式(这是在 JavaScript 中):
(?:^|.....)
我知道 ? 跟在一个字符后面时表示“零次或一次”,但不确定在这种情况下它是什么意思。
最佳答案
在处理群组时,您通常有几个选项可以修改群组的行为:
(foo) // default behavior, matches "foo" and stores a back-reference
(?:foo) // non-capturing group: matches "foo", but doesn't store a back-ref
(?i:foo) // matches "foo" case-insensitively
(?=foo) // matches "foo", but does not advance the current position
// ("positive zero-width look-ahead assertion")
(?!foo) // matches anything but "foo", and does not advance the position
// ("negative zero-width look-ahead assertion")
仅举几例。
它们都以“?”开头,这是表示组修饰符的方式。在这种情况下,问号与可选性无关。
它只是说:
(?:^foo) // match "foo" at the start of the line, but do not store a back-ref
有时,存储对你无论如何都不会使用的匹配的某些部分的反向引用是有点矫枉过正了。当这个组只是为了使一个复杂的表达式成为原子时(例如,它应该作为一个整体匹配或失败),存储一个反向引用是一种不必要的资源浪费,甚至可以稍微减慢正则表达式的速度。有时,您只想成为第 1 组,第一个与您相关的组,而不是正则表达式中的第一个组。
关于javascript - "?:^"正则表达式是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/603069/