0

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

例如,我想保持这样的状态:

<i>Phrases and words.</i>

我想删除短语中的</i>and<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>
4

1 回答 1

1

规则一:你不能用 regex 解析 html

话虽这么说,如果你知道每一行都遵循某种模式,你通常可以一起破解一些东西来工作。;)

如果我理解正确,看起来您可以简单地删除所有内容<i></i>而不是在行的开头或结尾。在这种情况下,您可以尝试的一种方法是以下正则表达式:

(?<=.)\<\/?i\>(?=.)

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

免责声明:这适用于regex101,但 notepad++ 可能与 pcre 正则表达式样式有一些差异。

更新以使用 Editpad

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

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

替换时,使用反向引用将整个匹配替换为两个捕获的字符 - 替换字符串\1\2应该可以工作。

于 2017-06-08T23:53:30.837 回答