正则表达式(javascript),调试器,Regex101

时间:2014-03-05 19:40:06

标签: javascript regex

我尝试了解Regex101调试器的行为,这是regex link,因此,如果您激活调试器并从第45行看一下,您可以看到以下行为:

  1. 第45行引擎正在观看$符号并了解字符串的结尾尚未到达,因此需要减去该字符串。
  2. 我的问题在于线条(46,48,50,52,54),我尝试理解当实际减法完成时,为什么引擎从子图案(第46行)内的$符号(第45行)开始当引擎在$符号上时,我看到的方式是46,48,50,52,54是浪费的线,我无法理解他们的贡献,我的意思是为什么我应该在更改发生时进入子模式$ sign上的引擎检查字符串是否结束。
  3. 如果有人能帮助我,我会非常感激。

    更新

    正则表达式:

    <\/span>((?:(?!<\/span>)[\s\S])+)$
    

    字符串:

    string</span>string</span>string</span>theStringIWant
    

1 个答案:

答案 0 :(得分:1)

应该有效。你在那个网站上使用过Raw正则表达式了吗? 不应该选择任何选项,即:没有多线或全局或任何东西。

 #  Delimited:      /<\/span>((?:(?!<\/span>)[\s\S])+)$/
 #  Raw:             </span>((?:(?!</span>)[\s\S])+)$   

 </span>
 (
      (?:
           (?! </span> )
           [\s\S] 
      )+
 )
 $ 

Perl测试用例 -

if ( "string</span>string</span>string</span>theStrngIWant" =~ /<\/span>((?:(?!<\/span>)[\s\S])+)$/)
{
    print "found: '$1'\n";
}

输出&gt;&gt;

found: 'theStrngIWant'