[英]Regex to replace forward slash if it isn't within an anchor/link tag
给定一个包含诸如some/text <a href="/some/text">some/text</a>
之类的序列的字符串,我只需要替换不在链接中的斜杠(在斜杠之后插入)。
请注意,字符串中会有上述的多个实例,它只是目标的正斜杠。
作为起点,我尝试使用/(\w)(\/{1})(\w)/
替换$1$2INSERT$3
,但这会替换链接中的斜杠。 我不确定如何使它不在<a*>
和</a>
内。
期望的结果:
some/INSERTtext <a href="/some/text">some/text</a>
也许这有点令人费解,但如果您使用的是 PHP,我可以试试这个正则表达式。 它也适用于嵌套/配对标签。
(?:(<(\S+)[^<>]*>(?:[^<>]|(?1))*<\/\2>)|<[^<>]*>)(*SKIP)(*F)|\/
/INSERT
这个想法是首先匹配所有标签然后忽略它们,然后你可以匹配/
安全。
检查测试用例。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.