文本使用通配符或正则表达式查找替换

时间:2014-04-23 19:29:10

标签: regex visual-studio text wildcard

我正在尝试使用正则表达式替换一些文本(使用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

感谢。

5 个答案:

答案 0 :(得分:1)

您可以使用

(^Canada\s+\d\d\d)\s(.*)

然后替换为:

\1-\2

See it work

另一种方法是使用正向前瞻,以便您可以正确处理重叠匹配:

(\d\d\d)\s(?=\d\d\d) 

然后更换

\1-

See that work

答案 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