I'm trying to convert this long JS regex to C#.
The JS code below gives 29 items in an array starting from ["","常","","に","","最新","、","最高"...]
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);
But the C# code below gives a non-splitted single item in 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);
Many questions in Stack Overflow are covering relatively simple expressions only, so I cannot find my mistakes.
What am I missing?
Your RegEx is wrong, you should not start and end with '/'
or '/g'
You specify a string in the constructor, not a JavaScript Regex (with '/ /' syntax.). That's a Javascript syntax.
Actually the same applies to JavaScript when you use a string constructor like this:
var regex = new RegExp('//');
// This will match 2 slashes
Here is a C# example code
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);
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.