C#Regex.Split与JavaScript的工作方式不同

时间:2018-09-04 01:58:59

标签: javascript c# regex cjk

我正在尝试将this long JS regex转换为C#。

下面的 JS代码["","常","","に","","最新","、","最高"...]开头的数组中给出了29个项目

var keywords = /(\ |[a-zA-Z0-9]+\.[a-z]{2,}|[一-龠々〆ヵヶゝ]+|[ぁ-んゝ]+|[ァ-ヴー]+|[a-zA-Z0-9]+|[a-zA-Z0-9]+)/g;
var source = '常に最新、最高のモバイル。Androidを開発した同じチームから。';
var result = source.split(keywords);

但是下面的 C#代码string[]中为未分割的单个项目

var keywords = @"/(\ |[a-zA-Z0-9]+\.[a-z]{2,}|[一-龠々〆ヵヶゝ]+|[ぁ-んゝ]+|[ァ-ヴー]+|[a-zA-Z0-9]+|[a-zA-Z0-9]+)/g";
var source = @"常に最新、最高のモバイル。Androidを開発した同じチームから。";
var result = Regex.Split(source, keywords);

Stack Overflow中的许多问题仅涉及相对简单的表达式,因此我找不到我的错误。

我想念什么?

2 个答案:

答案 0 :(得分:14)

您的RegEx错误,您不应以'/''/g'开头和结尾。您应在构造函数中指定一个字符串,而不是JavaScript Regex(使用“ / /”语法)。那是Javascript语法。

实际上,当您使用这样的字符串构造函数时,同样适用于JavaScript:

var regex = new RegExp('//'); //这将匹配2个斜杠

答案 1 :(得分:1)

这是C#示例代码

string keywords = @"(\ |[a-zA-Z0-9]+\.[a-z]{2,}|[一-龠々〆ヵヶゝ]+|[ぁ-んゝ]+|[ァ-ヴー]+|[a-zA-Z0-9]+|[a-zA-Z0-9]+)";
string source = @"常に最新、最高のモバイル。Androidを開発した同じチームから。";
string [] res = Regex.Split(source, keywords);

string single = "";
foreach ( string str in res )
    single += "'" + str + "',";
Console.WriteLine("{0}", single);