\ s + +正则表达式

Joh*_*nny 1 regex

我见过\ s ++但是我不确定它是什么意思.你能用一个例子吗?(\ s表示空格)

tch*_*ist 6

\s++意味着占有地匹配一个或多个空白字符.

这和写作一样(?>\s+).额外的加号使它具有占有欲,就像一个独立的子群.

这说明了不同之处:

% perl -Mre=debug -le 'print (("a " . " " x 300 . "x") =~ /a\s+\d/ || 0)' | & wc -l
     621
% perl -Mre=debug -le 'print (("a " . " " x 300 . "x") =~ /a\s++\d/ || 0)' | & wc -l
      26
Run Code Online (Sandbox Code Playgroud)

我正在计算正则表达式引擎解决匹配所需的步数.虽然没有匹配,但它不知道.它在第一种情况下尝试了一堆真正的愚蠢的东西,占有式匹配阻止它在第二种情况下尝试.一旦进行了占有式匹配,就无法回溯并重新计算.