我试图理解 Regex101 的行为调试器,这是 regex link ,所以如果你激活调试器并从第 45 行看一下,你可以看到以下行为:
- 第 45 行引擎正在观察 $ 符号并了解字符串的末尾尚未到达,因此它需要减去字符串。
- 我的问题是行 (46,48,50,52,54),我试图理解为什么当实际减法完成时引擎从子模式(第 46 行)内的 $ 符号(第 45 行)开始当引擎在 $ 符号上时,我看到它的方式是 46、48、50、52、54 是浪费的行我无法理解他们的贡献,我的意思是当变化发生时我为什么要进入子模式$ 符号上的引擎检查字符串是否结束。
如果有人能帮助我,我将不胜感激。
更新:
正则表达式:
<\/span>((?:(?!<\/span>)[\s\S])+)$
字符串:
string</span>string</span>string</span>theStringIWant
最佳答案
应该可以。您是否在该网站上使用过原始正则表达式?
不应该选择任何选项,即:没有多行或全局或任何东西。
# 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";
}
输出>>
found: 'theStrngIWant'
关于javascript - 正则表达式(javascript),调试器,Regex101,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22207560/