用“”替换模式

时间:2011-07-23 20:30:19

标签: c# regex replace

我正在尝试编写一个带有字符串形式的正则表达式:

<123>, ;<123>:::,<123>

其中123是某个数字,数字之间是一些标点符号。

我需要一个正则表达式,用“”替换数字字段之间的所有标点符号。

我试过了:

Regex.Replace(s, ">.*<", "");

但没有运气。什么正则表达式会实现这个目标?

编辑:我原来的正则表达式有点误导,对不起!正如评论者所说,我正在寻找&lt; 123&gt;&lt; 123&gt;&lt; 123&gt;

4 个答案:

答案 0 :(得分:2)

您需要让.*部分非贪婪,否则它会在您的字符串中的第一个>最后 <之间拾取所有内容。尝试类似:

Regex.Replace(s, ">.*?<", "");

这也将删除><字符。如果你想保留那些:

Regex.Replace(s, ">.*?<", "><");

答案 1 :(得分:2)

也不确定C#的确切语法,但是如果你的字符串保证不在这些尖括号之外的数字,那么你应该能够逃脱这个:

Regex.Replace(s, "[^\d<>]*", "");

删除任何不是数字或“&lt;”的内容或“&gt;”。如果你还想删除尖括号,它甚至更简单:

Regex.Replace(s, "[^\d]*", "");

答案 2 :(得分:1)

这两项都应该有效:

Regex.Replace(s, @"(\>|^).*?($|\<(?=\d{3}\>))", "$1$2");

String.Concat(Regex.Matches(s, @"\<\d{3}\>")
            .OfType<Match>().Select(a => a.Groups[0]));

答案 3 :(得分:0)

你应该按照建议使用括号。但我没有得到你想要替换的东西。

string s = "<123>, ;<123>:::,<123>";

s = (new Regex("[<>:, ;]")).Replace(s, "\"");

最终字符串将是;

“123” “” “” 123 “” “” “” 123"

相关问题