簡體   English   中英

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

[英]C# Regex.Split is working differently than JavaScript

我正在嘗試將這個長JS正則表達式轉換為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中的許多問題僅涵蓋相對簡單的表達式,因此我無法找到錯誤。

我錯過了什么?

你的RegEx是錯誤的,你不應該以'/''/g'開頭和結尾你在構造函數中指定一個字符串,而不是JavaScript Regex(帶有'/ /'語法。)。 這是一個Javascript語法。

實際上,當您使用這樣的字符串構造函數時,同樣適用於JavaScript:

var regex = new RegExp('//'); //這將匹配2個斜杠

這是一個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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM