我在记事本++(地址)中有一个文本,以下列形式存储:
一些数字(1或更多)比一些文本然后一些数字然后一些文本
我想搜索并替换所有这些:
第一个数字然后是文本,然后是句子“邮政编码”,然后是数字而不是文本的其余部分
示例:
15皇后街47000阿姆斯特丹
成为:
15 Queen Street邮政编码47000阿姆斯特丹
我试过这段代码:
^(\d*)(.*)(\d)
替换为:
\1\2 Postal Code \3
它不起作用..我已经尝试了很多其他代码在我的头脑中,但非工作
因为记事本得到了整个第二个数字..如果它只需要第二个数字的第一个数字就可以解决问题
答案 0 :(得分:4)
您需要为非贪婪匹配添加?
,它将匹配最后一组的第一个数字。我也会更改并使用+
量词,因为您声明它以某些数字(1
或更多)开头。
以下情况如何?
Find: ^(\d+)(.*?)(\d)
Replace: \1\2Postal Code \3
如果您愿意,可以简化一下。
Find: ^(\d+\D+)(?=\d)
Replace: \1Postal Code
根据您的输入,使用上述两个表达式,我得到以下输出:
15 queen street Postal Code 47000 Amsterdam
答案 1 :(得分:0)
将.*?
用于不情愿(非贪婪)的量词。
docs.oracle.com/javase/tutorial/essential/regex/quant.html