我可能会在这里失去理智,但我使用的正则表达式适用于JavaScript和其他语言,但在VS2013中无效。
我想用新的电话号码查找并替换所有电话号码,并将空格保留在相同的位置。
当前的电话号码08453333666正在被03035555111取代。该号码可能表示为0845 333 3666,08453 3336 66或任何其他变体。在给出的示例中,我想用相同索引处的空格替换它们,因此0845 333 3666变为0303 555 5111而08453 3336 66变为03035 5551 11.
我正在使用
0( *)8( *)4( *)5( *)3( *)3( *)3( *)3( *)6( *)6( *)6
查找和
0$13$20$33$45$55$65$75$81$91$101
替换。
这似乎适用于JavaScript和其他语言,但不能在VS2013中查找和替换文件。
有什么想法吗?
答案 0 :(得分:1)
您需要在替换中使用${<BACK-REFERENCE_ID>}
来表示正确的反向引用:
0${1}3${2}0${3}3${4}5${5}5${6}5${7}5${8}1${9}1${10}1
请参阅demo
关键是正则表达式引擎看到$13
并开始寻找第13个捕获的组,并且由于它缺失,因此$13
被视为文字。等等。
请参阅Substituting a Numbered Group:
$
后面的所有数字都被解释为属于数字组。如果这不是您的意图,则可以替换命名组。例如,您可以使用替换字符串${1}1
代替$11
来将替换字符串定义为第一个捕获的组的值以及数字"1"
。...
如果 number 未指定正则表达式模式中定义的有效捕获组,则
$number
将被解释为用于替换每个匹配的文字字符序列。