如何删除除两个字符串之间的内容之外的所有文本(Notepad++)

如何删除除两个字符串之间的内容之外的所有文本(Notepad++)

我必须从 17k 文件中删除所有 loginID。如何删除除两个字符串之间的内容之外的所有文本?

例如:

<USER_LOGIN_ID>user1</USER_LOGIN_ID>

<USER_LOGIN_ID>user2</USER_LOGIN_ID>

<USER_LOGIN_ID>user3</USER_LOGIN_ID>

<USER_LOGIN_ID>user4</USER_LOGIN_ID>

会离开

用户1

用户2

用户3

用户4

答案1

这是一个稍微复杂的正则表达式:

查找:<USER_LOGIN_ID>([^<]*)</USER_LOGIN_ID> 替换:$1

这里您要匹配<USER_LOGIN_ID>,后跟任意数量的非 字符<,后跟</USER_LOGIN_ID>。括号()将中心文本标记为字段,并$1在替换字符串中仅扩展到此匹配的字段。

对于每行仅显示一个匹配项的情况,您可以使用稍微简单的查找字符串<USER_LOGIN_ID>(.*)</USER_LOGIN_ID>,但如果每行有两个登录,此方法将会失败。

如果一行上有多个登录信息,则第一个查找将连接这些字符串,除非源文本中有中间标点符号(如果没有,则必须将其添加到替换字符串中,例如$1- 后面跟着空格)。

当然,您需要在选项中标记正则表达式(可能还需要匹配大小写)。

答案2

搜索:

<USER_LOGIN_ID>(.*?)</USER_LOGIN_ID>

用。。。来代替:

\1

该表达式.*?表示介于两个指定标签之间的最短文本。(问号使匹配非贪婪。)

相关内容