我有一个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>
答案 0 :(得分:1)
第一条规则:你can't parse html with regex。
话虽如此,如果你知道每一行都遵循某种模式,你通常可以将某些东西混在一起工作。 ;)
如果我已正确理解,您似乎只需删除行的开头或结尾处的所有List
和<i>
。在这种情况下,您可以尝试的一种方法是以下正则表达式:
</i>
这将匹配标签,带有前瞻和后面以确保我们不在行的结尾/开始(通过检查前/后是否存在另一个字符。(注意通常匹配的字符)在搜索/替换时,在前瞻/后方不会被替换。)
免责声明:这适用于regex101,但记事本++可能与pcre正则表达式风格有所不同。
编辑:由于这个问题实际上是想知道如何在Editpad中执行此操作,下面是一个修改过的替代方案:
尝试搜索正则表达式:(?<=.)\<\/?i\>(?=.)
。这将匹配(并捕获)(.)\<\/?i\>(.)
标记之前和之后的一个字符。
替换时,使用backreferences将整个匹配替换为两个捕获的字符 - 替换字符串<i>
应该有效。