RegEx替换字符串

本文关键字:字符串 替换 RegEx | 更新日期: 2023-09-27 18:07:24

在我继续并解析它之前,我试图规范化字符串。基本上去掉逗号前后的空格,如果两个或多个逗号之间只有空格,则用一个逗号代替。

var r = new Regex(@"('s*,+'s*)");
var query = r.Replace("my reg, is a   disaster    everytime , i,try ,it,       yep, ,disaster.", ",");

输出应该是:

my reg,is a   disaster    everytime,i,try,it,yep,disaster.

但它:

my reg,is a   disaster    everytime,i,try,it,yep,,disaster.

感谢您的帮助

RegEx替换字符串

Try

var r = new Regex(@"('s|,)*,('s|,)*");

基本上,用一个逗号替换任意数量的逗号和空格,其中至少存在一个逗号。

non-Regex解:

var dirty = "my reg, is a   disaster    everytime , i,try ,it,       yep, ,disaster.";
var clean = string.Join(",",
                           dirty.Split(new[] {","}, StringSplitOptions.RemoveEmptyEntries)
                                .Select(x => x.Trim())
                                .Where(x => x.Length > 0));
输出:

my reg,is a   disaster    everytime,i,try,it,yep,disaster.

它是如何工作的?通过","符号拆分原始字符串,丢弃空字符串,从每个字符串的开始/结束修剪所有空白,使用相同的","连接非空字符串。

IMO,比RegEx更容易支持

在原始字符串中,两个逗号(",,")之间有一个空格,但正则表达式表示,+,这意味着一个或多个连续的逗号。('s*(,'s+)+'s*) ?