如何使用正则表达式替换管道字符的第二次和第三次出现之间的所有字符串?

时间:2016-10-16 06:15:51

标签: regex notepad++

我想替换第二个和第三个管道字符之间出现的所有字符。例如:

<select >
  <option value="http://www.test.com/teste4" selected>test 4</option>
  <option value="http://www.test.com/teste1/">test1</option>
  <option value="http://www.test.com/teste2">Google</option>
  <option value="http://www.test.com/teste3">YouTube</option>
</select>

在此我希望用空值替换|hello|welcome,to| ,并替换一个巨大的文件。我需要在记事本++中使用正则表达式模式。

2 个答案:

答案 0 :(得分:1)

在notepad ++中使用此正则表达式进行搜索:

^([^|]*\|[^|]*\|)[^|]*

并替换为:

$1

([^|]*\|[^|]*\|)在第二个|之前匹配并捕获文本到捕获组#1。

RegEx Demo

答案 1 :(得分:1)

假设您正在解析每一行,即令牌不能包含换行符:

找到:

^((?:[^|\n]*\|){2})[^|\n]*+\|

替换为:

$1|

描述

  • ^ - 匹配行的开头
  • ((?:[^|\n]*\|){2}) - 第1组中的匹配和捕获:
    • (?:[^|\n]*\|){2}以下表达式重复两次
    • [^|\n]* - 除管道或换行符之外的任何字符
    • \| - 后跟管道
  • [^|\n]*+ - 您要删除的令牌(除了竖线或换行符之外的任何字符)
  • \| - 后跟管道
相关问题