正则表达式 - 选择第二场比赛

时间:2017-06-08 22:13:04

标签: regex replace editpad

我有一个txt文件,其中包含<i></i>之间的字词,我想使用Editpad删除

例如,我想保留这样的时间:

<i>Phrases and words.</i>

我想删除短语中的</i><i>标记,如下所示:

<i>Phrases</i>and<i> words.</i>
<i>Phrases</i>and <i>words.</i>

我试图用正则表达式做到这一点,但我不能这样做。

由于标签后跟空格或单词字符,我可以在该行带有带

的双标签时找到
/ <i>|<\/i> /

但是这样我就不能只按下替换,我必须逐行编辑。

无论如何要做到这一点?

*已编辑*

在字幕文本

上找到的另一行示例
<i>- find me on the chamber.</i>
- What? <i>Go. Go, go, go!</i>

1 个答案:

答案 0 :(得分:1)

第一条规则:你can't parse html with regex

话虽如此,如果你知道每一行都遵循某种模式,你通常可以将某些东西混在一起工作。 ;)

如果我已正确理解,您似乎只需删除行的开头或结尾处的所有List<i>。在这种情况下,您可以尝试的一种方法是以下正则表达式:

</i>

这将匹配标签,带有前瞻和后面以确保我们不在行的结尾/开始(通过检查前/后是否存在另一个字符。(注意通常匹配的字符)在搜索/替换时,在前瞻/后方不会被替换。)

免责声明:这适用于regex101,但记事本++可能与pcre正则表达式风格有所不同。

更新以使用Editpad

编辑:由于这个问题实际上是想知道如何在Editpad中执行此操作,下面是一个修改过的替代方案:

尝试搜索正则表达式:(?<=.)\<\/?i\>(?=.) 。这将匹配(并捕获)(.)\<\/?i\>(.)标记之前和之后的一个字符。

替换时,使用backreferences将整个匹配替换为两个捕获的字符 - 替换字符串<i>应该有效。