基本上我有一个字符串,我想找到与字符重复匹配N次的最短子字符串(包括开头),如果连续或不连续都没关系。我想在Javascript中使用它。
示例: 让我们弄清楚这个角色是' /'我们希望它能匹配5次重复。
对于此字符串: http://remote-computer.example.local/home/dev/proj/sdk/docs/index.html#/api
匹配的字符串将是: http://remote-computer.example.local/home/dev/
对于此字符串: ////远程计算机/示例/本地/家
匹配的字符串将是: ////远程计算机/
答案 0 :(得分:3)
这个正则表达式怎么样:
^((?:[^/]*/){5})
您想要的子字符串将被捕获到第1组。
在javascript中你可以这样做:
var re = new RegExp("^((?:[^/]*/){5})); // excape the slashes is not mandatory
或
var re = /^((?:[^\/]*\/){5})/; // here you have to excape the slashes
<强>解释强>
^ : begining of the string
( : start capture group 1
(?: : start non capture group
[^/]*/ : 0 or more any character that is not a slash, followed by a slash
){5} : the non capture group occurs 5 times
) : end of group 1
答案 1 :(得分:2)
您可以使用(?:.*?/){5}
。 See a demo here
这与Toto的regexp完全相同的子串匹配,但更短:
^
;正则表达式在开头默认情况下开始匹配。.*?/
匹配“所有内容,直到下一个/
,包括”,也可以像Toto一样写成[^/]*/
。