发布此问题的修订版,该问题最初由 @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
截图(之前):
截图(之后):