从具有特定结尾字符的字符串中提取特定字符串

从具有特定结尾字符的字符串中提取特定字符串

我有一个文本文件并使用 Notepad++。我有如下输入行(带有换行符且没有设置模式),并且想要提取之前的数字T并以竖线分隔的形式输出数字。

输入

(1745817T OR 1745818T OR 1745820T OR 1745819T) AND NOT (1786717T)
(3406379T OR 3410183T OR 3414397T OR 3272288T OR 3348134T OR 3379438T OR 3348136T OR 3420508T OR 3420503T OR 3420511T OR 3420504T OR 3420505T OR 3420507T OR 3420512T)

输出

1745817|1745818|1745820|1745819|1786717
3406379|3410183|3414397|3272288|3348134|3379438|3348136|3420508|3420503|3420511|3420504|3420505|3420507|3420512

请帮助如何从行中提取此字符串。问候,Ashish

答案1

编辑,根据要求更改:

  • Ctrl+H
  • 找什么:([()])|T[^\d\r\n]+(\R)?
  • 用。。。来代替:(?1:(?2$2:|))
  • 检查环绕
  • 检查正则表达式
  • Replace all

解释:

    ([()])      : group 1, open or close parenthesis
  |             : OR
    T           : the letter T
    [^\d\r\n]+  : 1 or more any character that is not a digit or linebreak
    (\R)?       : group 2, a line break, optional

替代品:

(?1:            : conditionnal replacement, 
                    if group 1 exists replace with nothing
  (?2$2:|)      : conditionnal replacement, 
                    if group 2 exists let it at same place
                    else replace with pipe |
)

给定示例的结果:

1745817|1745818|1745820|1745819|1786717
3406379|3410183|3414397|3272288|3348134|3379438|3348136|3420508|3420503|3420511|3420504|3420505|3420507|3420512

相关内容