首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >正则表达式-选择第二个匹配

正则表达式-选择第二个匹配
EN

Stack Overflow用户
提问于 2017-06-08 22:13:04
回答 1查看 343关注 0票数 0

我有一个带有<i></i>的txt文件,在我想要使用Editpad删除的单词之间

例如,当它是这样的时候,我想保留它:

代码语言:javascript
复制
<i>Phrases and words.</i>

我想删除短语中的</i><i>标记,如果是这样的话:

代码语言:javascript
复制
<i>Phrases</i>and<i> words.</i>
<i>Phrases</i>and <i>words.</i>

我试着用regex做这个,但我做不到。

因为标签后面跟着空格或一个字字符,所以当行中有双标记时,我可以找到

代码语言:javascript
复制
/ <i>|<\/i> /

但是这样我就不能不按替换键了,我必须逐行编辑我的搜索。

有办法做到这一点吗?

*编辑*

在字幕文本上找到的另一个行示例

代码语言:javascript
复制
<i>- find me on the chamber.</i>
- What? <i>Go. Go, go, go!</i>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-06-08 23:53:30

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

也就是说,如果你知道每一行都遵循一定的模式,你通常可以在一起破解一些东西来工作。;)

如果我的理解是正确的,那么看起来您可以简单地删除所有不在行首或行尾的<i></i>。在这种情况下,您可以尝试的一种方法是以下regex:

代码语言:javascript
复制
(?<=.)\<\/?i\>(?=.)

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

免责声明:这在regex101上有效,但是notepad++可能与pcre风格有一些不同。

使用Editpad更新

编辑:由于这个问题实际上是想知道如何在Editpad中这样做,下面是一个修改后的备选方案:

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

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44446381

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档