删除所有内容但保持匹配

时间:2017-07-30 21:38:01

标签: regex notepad++

如果我有大文,并且我需要保留匹配的内容,我该怎么办?

例如,如果我有这样的文字:

asdas8Isd8m8Td8r
asdia8y8dasd
asd8is88n8gd
asd8t8od8lsdas
as9ea9ad8r1n88r8e87g6765ejasdm8x

并使用此正则表达式:[0-9]([a-z])将数字后的所有字母分组并替换为\1我会将所有(数字)(字母)重新表示为(字母)(如果我想删除休息,只留下匹配的字母)?...

将此文本转换为

ImTr
y
ing
tol
earnregex

如何用分组替换此文本并删除其余文本?

如果我想删除所有但不匹配的? 在这种情况下,将文本转换为:

8I8m8T8r
8y8d
8i8n8g
8t8o8l
9e9a9r1n8r7g5e8x

我可以匹配所有不是[0-9]([a-z])吗?

谢谢! :d

1 个答案:

答案 0 :(得分:2)

您可以使用以下正则表达式:

(?i-s)[0-9]([a-z])|.

替换为(?{1}$1:)

要删除所有但不匹配的内容,请使用相同正则表达式的(?{1}$0:)替换。

<强>详情:

  • (?i-s) - 内联修饰符打开不区分大小写的模式并关闭DOTALL模式(.与换行符不匹配)
  • [0-9]([a-z]) - 一个ASCII数字和捕获到第1组的任何ASCII字母(后面用字符替换模式引用$1\1反向引用)
  • | - 或
  • . - 任何字符,但换行符。

替换详情

  • (?{1} - 条件替换的开始:如果组1匹配则...
    • $1 - 第1组的内容(或使用$0反向引用时的整个匹配)
    • : - 否则......没有
  • ) - 条件替换模式的结束。

enter image description here