我正在尝试使用正则表达式替换一些文本(使用Visual Studio) 例如
我必须将加拿大123 567-890 替换为加拿大123-567-890 我的意思是在123
之后的差距中添加-
使用通配符查找替换,我尝试:
Find: Canada ****567-890
Replace: Canada 123-567-890
这很好用。但是我怎么能概括它呢?例如,我怎么能用任何数字而不是123(见下文)
Canada 454 767-785
Canada 899 567-788
Canada 345 345-645
Canada 788 456-766
感谢。
答案 0 :(得分:1)
您可以使用
(^Canada\s+\d\d\d)\s(.*)
然后替换为:
\1-\2
另一种方法是使用正向前瞻,以便您可以正确处理重叠匹配:
(\d\d\d)\s(?=\d\d\d)
然后更换
\1-
答案 1 :(得分:1)
您可以使用以下内容。
Find: ^(Canada\s+\d{3})\s
Replace: \1-
答案 2 :(得分:0)
"Canada\ [0-9][0-9][0-9]\ [0-9][0-9][0-9]\-[0-9][0-9][0-9]"
或
"Canada\ [0-9]{3}\ [0-9]{3}\-[0-9]{3}"
这样的东西应该可以解析或返回字符串。您必须用 - 字符替换第一个空格。
从输入流中找到文本后,请使用替换它 低技术方法。您正在尝试使用正则表达式替换第二个变得复杂的空间。
int lastIndexPos = foundStr.LastIndexOf(' ');
Result = FoundStr.Substring(0,lastIndexPos) + "-" + FoundStr.Substring(lastIndexPos+1);
像这样的低技术应该有用。
答案 3 :(得分:0)
使用NotePad ++
查找:'加拿大(\ d +)'
替换:'加拿大$ 1 - ' (不需要单引号)
就是这样!
答案 4 :(得分:-1)
我不熟悉VS,但一般的正则表达式是/^(\w+) (\d+) (\d+-\d+)$/g
Javascript中的一个例子:
'Canada 123 567-890'.replace(/^(\w+) (\d+) (\d+-\d+)$/g, '$1 $2-$3');
"Canada 123-567-890"
我认为在VS中您必须将$1 $2-$3
更改为\1 \2-\3
。