Notepad++ 在同一行找到多个匹配项,并仅返回这些匹配项的摘录

Notepad++ 在同一行找到多个匹配项,并仅返回这些匹配项的摘录

发布此问题的修订版,该问题最初由 @mashuptwice 回答(请参阅Notepad++:如何在同一行上查找字符串的多个实例并用找到的字符串替换整行)。

例如:

Suzy sells sea shells for USD$55 and USD$65 and USD$20 
Dave sells all kinds of junk for USD$30 and others
Philip sells CDs for USD$40 and USD$10

输出需要:

55, 65, 20
30
40, 10

我试过了

搜索:.*?(USD$(\d+)) 替换为:$2,

问题在于我的第二行输出是

30 及其他

我不想匹配“和其他人”。有人能帮忙吗?

答案1

以下是完成这项工作的方法:

  • Ctrl+H
  • 找什么:.*?USD\$(\d+)(?:(?!USD).)*
  • 用。。。来代替:$1,
  • 打钩 相符
  • 打钩 环绕
  • 选择 正则表达式
  • 取消勾选 . matches newline
  • Replace all

解释:

.*?         # 0 or more any character but newline
USD\$       # literally
(\d+)       # group 1, 1 or more digits
(?:         # non capture group
    (?!USD)     # negative lookahead, make sure we haven't USD after
    .           # any character but newline
)*          # end group, may appear 0 or more times

截图(之前):

在此处输入图片描述

截图(之后):

在此处输入图片描述

相关内容