0

我在 Notepad++ 中有数千个条目(在其他混合文本中),我试图删除任意 2 个数字之间的破折号。

我有这样的数据:

text text this is text here
234-5678
this is more text here 
123-4585 this is more text here
or text is here too 583-5974

期望的结果:

text text this is text here
2345678
this is more text here 
1234585 this is more text here
or text is here too 5835974

我试过了:

Find: [0-9]-[0-9] (which works to find the (#)(dash)(#)
Replace: $0, $1, \1, ^$0, "$0", etc.
4

2 回答 2

3

试试这个正则表达式。

(?<=\d)-(?=\d)
于 2013-10-31T19:12:51.030 回答
2

你的方法有什么问题:

Find: [0-9]-[0-9] (which works to find the (#)(dash)(#)
Replace: $0, $1, \1, ^$0, "$0", etc.

$0或其他是否$1指的是捕获的组,而您的 find 正则表达式没有。如果您这样做,它会起作用:

Find: ([0-9])-([0-9])
Replace: $1$2

$1将包含第一个数字和$2第二个数字。

当然,现在,使用像edi_allen 的答案(?<= ... )是积极的后向和(?= ... )积极的前瞻)中的环顾四周也可以工作,并避免您使用反向引用($1$2)的麻烦。

$0包含整个匹配。$1包含第一个捕获的组并$2包含第二个捕获的组。

于 2013-10-31T19:28:27.997 回答