我的理解是regexp表单最多a{m,n}匹配an次.但是,以下代码段无法正常工作(这是javascript):
/\{{2,2}/.exec ('df{{{df')
// [ '{{', index: 2, input: 'df{{{df' ]
Run Code Online (Sandbox Code Playgroud)
它不应该返回null吗?
它与文本匹配,因为有两个.这满足了你的正则表达式指定的要求.如果你想阻止额外的匹配使用否定前瞻:(?!\{).
(?:^|[^{])(\{{2,2}(?!\{))
Run Code Online (Sandbox Code Playgroud)
然后,使用第一个捕获的组.
编辑,顺便说一句,在对,2中{2,2}在这种情况下可选的,因为它是相同的号码.
编辑:添加用法示例以摆脱第一个匹配的字符.(Javascript不支持负面的lookbehind.
var myRegexp = /(?:^|[^{])(\{{2,2}(?!\{))/g;
var match = myRegexp.exec(myString);
alert(match[1]);
Run Code Online (Sandbox Code Playgroud)