当试图找到一个href标签以便在字符串中保存的html中动态更新它们时,自从从2.0移动到4.0以来,一直运行良好一段时间的RegEx已经破坏。
正则表达式:
<a\\s+[^>]*(href=\"([^#\"]+)\")[^>]*>(.*)</a>
我们用它们中的哈希(#)来折扣那些href,因为这意味着它们已经被更新但是想要返回所有其他实例。问题来了,因为现在我们的javascript函数输出时使用'
而不是单引号,这意味着它们会因为哈希(#)而违反测试。
.Net从2.0到4.0的变化是否会导致这种变化?
更新
如上所述,.Net 4.0正在吐出并自动将单引号更改为'
。
<a class="ctl00_Menu_1 Menu_DynamicMenuItemStyle ctl00_Menu_6" href="javascript:__doPostBack('ctl00$Menu','Menu Parent\\Menu Child')" style="border-style:none;font-size:1em;">Menu Child</a>
以前,它输出以下内容:
<a class="ctl00_Menu_1 Menu_DynamicMenuItemStyle ctl00_Menu_6" href="javascript:__doPostBack('ctl00$Menu','Menu Parent\\Menu Child')" style="border-style:none;font-size:1em;">Menu Child</a>
我们的正则表达式正确捕捉到了这一点,但我们必须更新到以下内容:
@"<a\s+[^>]*(href=\""([^#\""][^\""]+)\"")[^>]*>(.*)</a>"
这现在解释了新出现的哈希值,而没有筛选出那些编码的哈希值。我已经解决了这个问题,并且理解已经发生了变化,尽管我不是100%已经做出改变的地方。感谢您的关注。