我正在使用C#来处理一些JavaScript代码,并遇到另一个对象内的对象被删除的情况,因此我留下了两个连续的逗号,它们之间有或没有空格。我想找到它们并用一个逗号替换。
我在regexstorm.net中尝试了这个正则表达式来找到两个连续的逗号:
,\s*,
但我没有得到任何比赛。知道我做错了什么吗?
以下是输入示例:
window.Something = {
O1: {
F1: "A"
},
,
O3: {
F2: "C"
},
O4: {
F3: "D"
}
}
答案 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 *),强>
符号的Unicode字符:\u200b
符号的Html字符:​