多重匹配和替换
本文关键字:替换 | 更新日期: 2023-09-27 18:06:36
我有这个字符串:
<x> <span class='var'>or<tg>test<pk>testing</pk></tg><tx>or</tx><tg>teste<pk>testando</pk></tg></span></x>
我使用这个模式:
<tg>(.*)<pk>(.*)</pk></tg>
但是它是从第一个<tg>
替换到最后一个,忽略了中间的</tg>
。
替换字符串:
<a href='def.aspx?&word=$2'>$1</a>
.*
是贪婪的所以它在找到匹配后继续。您可以稍微调整正则表达式来改变这种行为:
<tg>([^<]*)<pk>([^<]*)</pk></tg>
(也就是说,允许在<tg>
和<pk>
标签内使用否定的字符类打开<
之外的任何内容)
或:
<tg>(.*?)<pk>(.*?)</pk></tg>
(使用*
的惰性量词使引擎匹配尽可能少的出现)