我想写一个正则表达式,将采取以下形式的字符串模式:替换为“”
<123>, ;<123>:::,<123>
,其中123是一些数字和数字之间是一些标点符号。
我需要一个正则表达式将替换为“”数字领域之间的所有标点符号。
我尝试这样做:
Regex.Replace(s, ">.*<", "");
但没有运气。什么正则表达式可以完成这个?
编辑:我原来的正则表达式是有点误导,对不起!正如评论者说,我在寻找< 123> < 123> < 123>
我想写一个正则表达式,将采取以下形式的字符串模式:替换为“”
<123>, ;<123>:::,<123>
,其中123是一些数字和数字之间是一些标点符号。
我需要一个正则表达式将替换为“”数字领域之间的所有标点符号。
我尝试这样做:
Regex.Replace(s, ">.*<", "");
但没有运气。什么正则表达式可以完成这个?
编辑:我原来的正则表达式是有点误导,对不起!正如评论者说,我在寻找< 123> < 123> < 123>
不能确定确切的C#语法下去,但如果你的字符串保证不会有那些尖括号以外的号码,那么你就应该能与此逃脱:
Regex.Replace(s, "[^\d<>]*", "");
因此,删除任何非数字或“<”或“>”的东西。如果您还想删除尖括号,则更简单:
Regex.Replace(s, "[^\d]*", "");
你需要让.*
部分非贪婪,否则会拿起第一>
和最后<
之间的一切在你的字符串中。尝试是这样的:
Regex.Replace(s, ">.*?<", "");
这将清除>
和<
字符也。如果您想保留这些:
Regex.Replace(s, ">.*?<", "><");
您应该按照建议使用括号。但我没有得到你想要取代的东西。
string s = "<123>, ;<123>:::,<123>";
s = (new Regex("[<>:, ;]")).Replace(s, "\"");
最终的字符串将是;
“123” “” “” 123 “” “” “” 123"
这两个应该工作:
Regex.Replace(s, @"(\>|^).*?($|\<(?=\d{3}\>))", "$1$2");
或
String.Concat(Regex.Matches(s, @"\<\d{3}\>")
.OfType<Match>().Select(a => a.Groups[0]));
你不需要' @' - 它们被用来忽略转义字符:'“\\ d”''主场迎战@“\ d”'这应该做的,但输出'“<123123123>”',这是奇怪的,虽然它看起来像。 OP要求什么 – Kobi
@Kobi听起来像OP预计'“<123><123><123>“' –
@Kobi:感谢您的语法提示! – Mat