对于我的一个类,我必须描述以下正则表达式:
\b4[0-9]{12}(?:[0-9]{3})\b
Run Code Online (Sandbox Code Playgroud)
我知道它选择一个数字:从4开始,后跟12位数字(每个在0-9之间),然后是另外3位数字.
我不明白的是带分号的问号(?:....).我试过在线查找这意味着什么,但我发现的链接有些令人困惑; 我希望有人可以快速了解问号在这个例子中的作用.
小智 75
这将是简短的回答.
当您使用(?:)它时意味着group匹配但未捕获用于反向引用,即非捕获组.它没有存储在内存中以便稍后引用.
例如:
(34)5\1
这个正则表达式意味着你正在寻找34接着5然后又一次34.当然你可以把它写成34534但有时这captured group是一个你手头无法预测的复杂模式.
因此,捕获组匹配的任何内容都应该再次出现.
替换时也使用反向引用.
例如:
([A-Z]+)[0-9]+
此正则表达式将查找many大写字母后跟many数字.我希望仅通过找到大写字母来替换整个模式.
然后我将替换整个模式,使用\1哪个代表反向引用第一个捕获的组.
如果更改(?:[A-Z]+)[0-9]+为此将不再捕获它,因此无法返回参考.
| 归档时间: |
|
| 查看次数: |
52765 次 |
| 最近记录: |