2011-11-25 99 views
0

如何替换链接中的特定文本,但跳过已经链接的文本?如何替换链接中的文字,但跳过已经链接的文字?

例子:

<a href="helloworld.com">Lorem ipsum dolor sit amet</a>, consectetur 
adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore 
magna aliqua. Lorem ipsum dolor sit amet, consectetur <a 
href="adipisicing.com">adipisicing</a> elit, sed do eiusmod tempor 
incididunt ut labore et dolore <a href="helloworld.com">magna aliqua. 
Lorem ipsum</a> dolor sit amet, consectetur adipisicing elit, sed do 
eiusmod tempor incididunt ut labore et dolore magna aliqua. 

正如你看到的,我需要在第二个语句来代替“Lorem存有”<a href="somewhere.com">Lorem ipsum</a>,但跳过“Lorem存有”已经在联系。

谢谢!

+0

事前请使用搜索功能。还请解释你是如何得出结论使用正则表达式的(你还尝试过什么?),或者如果这是一个实际的约束。 – mario

+0

我用搜索,但没有找到任何我需要的东西。我试过了,但我的表情取代了已经在链接中的文字。 – RKI

+0

你目前的正则表达式在哪里?的 – ThiefMaster

回答

4

正则表达式是不是很适合处理HTML。每个解决方案都会在评论,嵌入式JavaScript或格式错误的HTML上失败。

这就是说,如果你严格控制你的文档的结构,你可以尝试正则表达式的方法。为了满足每一个“Lorem存有”不是a标签内,我会使用

Lorem ipsum(?=([^<]*($|<a |<[^/]|</[^a]))*($|(?<=a))) 

该语句使用look ahead assertion如果接下来收盘前一个接着一个开a标签匹配“Lorem存有”或者没有进一步的标签。请参阅RegExr

正如你所看到的,它可能是更好的使用HTML解析器。 =)

+0

超级感谢!其作品! – RKI

+0

+1分析器建议。 –