请问下面正则表达式是什么意思
本文介绍了请问下面正则表达式是什么意思的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
^.*(C:\\Windows\\(?:system32|syswow64)\\.*\.(dll|exe))$
请问上述表达式中的 "?:" 是什么意思, ? 不是表示 0 或 1 个吗, 怎么和冒号组合在一起了
解决方案
/^.*(C:\\Windows\\(?:system32|syswow64)\\.*\.(dll|exe))$/
上面应该是匹配路径的
(?:system32|syswow64)是捕获组,而且是非捕获型捕获组,表示后面紧跟system32|syswow64的匹配
举个例子:
var str = "C:\\Windows\\system32\\aaa.dll";
/^.*(C:\\Windows\\(?:system32|syswow64)\\.*\.(dll|exe))$/.exec(str)
结果为:
["C:\Windows\system32\aaa.dll",
"C:\Windows\system32\aaa.dll",
"dll",
index: 0,
input: "C:\Windows\system32\aaa.dll"]
括号都表示捕获,可以看出正则中有三组大括号
1. (C:\\Windows\\(?:system32|syswow64)\\.*\.(dll|exe))
这是捕获型的组,结果会输出来
=》匹配结果: C:\Windows\system32\aaa.dll(结果中第2条)
2. (?:system32|syswow64)
带问号的都是非捕获型的组(还包括?! ?=),结果是不输出来的
=》匹配结果:无
3. (dll|exe)
这是捕获型的组,结果会输出来
=》匹配结果: dll(结果中第3条)
你可能发现了,整个匹配的结果中有两个C:\Windows\system32\aaa.dll,其实第1个是整个匹配的结果。
这篇关于请问下面正则表达式是什么意思的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文