C#Regex找到两个用可能的空格分隔的逗号

时间:2017-05-15 10:35:04

标签: c# regex

我正在使用C#来处理一些JavaScript代码,并遇到另一个对象内的对象被删除的情况,因此我留下了两个连续的逗号,它们之间有或没有空格。我想找到它们并用一个逗号替换。

我在regexstorm.net中尝试了这个正则表达式来找到两个连续的逗号:

,\s*,

但我没有得到任何比赛。知道我做错了什么吗?

以下是输入示例:

window.Something = {
​    O1: {
​       F1: "A"
​    },
​    ,
​    O3: {
​        F2: "C"
​    },
​    O4: {
​        F3: "D"
​    }
​}

2 个答案:

答案 0 :(得分:3)

您的内容在以"空格"分隔的逗号之间包含200B ZERO WIDTH SPACE。由于char不属于空格,因此需要将其添加到模式中。

使用

,[\s\u200B]*,

请参阅regex demo

或者,只需添加整个\p{Cf} "Other, format" Unicode category

,[\s\p{Cf}]*,

请参阅another demo

每当您怀疑要处理的是哪种输入时,请使用一些十六进制工具。我更喜欢快速检查r12 Unicode code conveter处的字符串,它与UniView tool一起是检查字符串输入中的Unicode符号的绝佳资源(没有联系,只是普通用户多年)。

答案 1 :(得分:0)

在您的示例中,空格和逗号之间有一个字符·。所以,你必须在你的正则表达式中使用这个char。下面的正则表达式将使用char而不使用char。我在Regex101示例中替换了两个逗号。请查看示例正则表达式:

正则表达式:

下,(\ S * \·\ S * | \ S *),

Regex101 Example

符号的Unicode字符:\u200b 符号的Html字符:​