Anh*_*hTu 3 regex string replace
我想写一个正则表达式,它将用链接替换单词Paris,因为只有单词没有准备好作为链接的一部分.
例:
i'm living <a href="Paris" atl="Paris link">in Paris</a>, near Paris <a href="gare">Gare du Nord</a>, i love Paris.
Run Code Online (Sandbox Code Playgroud)
会成为
i'm living.........near <a href="">Paris</a>..........i love <a href="">Paris</a>.
Run Code Online (Sandbox Code Playgroud)
这很难一步到位.编写单个正则表达式实际上是不可能的.
尝试两步法.
<a href="..."><a href="...">Paris</a></a>
),并消除内部链接.第一步的正则表达式很简单:
\bParis\b
Run Code Online (Sandbox Code Playgroud)
第二步的正则表达式稍微复杂一些:
(<a[^>]+>.*?(?!:</a>))<a[^>]+>(Paris)</a>
Run Code Online (Sandbox Code Playgroud)
在整个字符串中使用该字符串并将其替换为匹配组1和2的内容,从而有效地删除多余的内部链接.
用简单的词解释正则表达式#2:
<a[^>]+>
),可选地后跟任何本身不是后跟关闭链接(.*?(?!:</a>)
)的内容.将其保存到匹配组1中.<a[^>]+>
).确保它在那里,但不要保存它.</a>
).确保它在那里,但不要保存它.该方法假设这些方面条件:
(?!:...)
).Paris
"变为" <a href"...">Paris</a>
",否则第二步将失败(直到您更改第二个正则表达式).BTW:正则表达式#2明确允许这样的结构:
<a href="">in the <b>capital of France</b>, <a href="">Paris</a></a>
剩余链接来自第一步,第二步的替换结果将是:
<a href="">in the <b>capital of France</b>, Paris</a>