在线子字符串上应用正则表达式

时间:2016-02-25 15:58:29

标签: regex sed sublimetext3

给出如下行:

<String id="blah"><a href="#" class="btn">Download</a></String>

我假装将其改为:

<String id="blah">&lt;a href="#" class="btn"&gt;Download&lt;/a&gt;</String>

也就是说,我想申请替换 1)<&lt;,和
2)>&gt;
仅限于String标记中包含的文字。

是否可以在一行中完成?

注意:我只是使用sublime进行文本替换。我所追求的是一个类似sed的正则表达式。

更新:您可以在String标记内获取任何内容,而不仅仅是<a href...>...</a>个表达式。

1 个答案:

答案 0 :(得分:1)

试试这个:

<a(.*?)>(.*?)<\/a>
  • <a匹配字符串
  • 中的<a
  • (.*?)>匹配所有(如果存在),直到>字符
  • (.*?)<\/a>匹配(如果存在)的所有内容,直到</a>个字符

然后用以下模式替换它以产生预期结果:

&lt;a$1&gt;$2&lt;/a&gt;

Online Demo

修改

根据评论,这是一个正则表达式,它匹配<String>标记之间的所有内容,并用<>替换&lt;&gt;

/<String(.*?)>(.*?)<([^>]*)>(.*?)<(.*?)><\/String>/

Online Demo

注意:您还可以使用/g修饰符将其设为全局。所有比赛(不会在第一场比赛时返回)