Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 最好的正则表达式_C#_Regex - Fatal编程技术网

C# 最好的正则表达式

C# 最好的正则表达式,c#,regex,C#,Regex,全部,我有以下字符串列表 List<string> list = new List<string>() { "Japanese (Japan) (ja-jp)", "Scottish Gaelic (United Kingdom) (gd-gb)", "German (Germany) (de-DE)", "Amharic (Ethiopia) (am-et)" }; 我目前正在使用组和Regex Regex regex = ne

全部,我有以下字符串列表

List<string> list = new List<string>() 
{ 
    "Japanese (Japan) (ja-jp)",
    "Scottish Gaelic (United Kingdom) (gd-gb)", 
    "German (Germany) (de-DE)", 
    "Amharic (Ethiopia) (am-et)"
};
我目前正在使用组和
Regex

Regex regex = new Regex(@"(.*)\s*(\(.*\))\s*(\(.*\))");

是否有人能提供更好的
Regex

如果您的代码始终采用这种格式,您可以使用子字符串提取而不是Regex:

var codes = list.Select(l => l.Substring(l.Length - 6, 5)).ToList();
那么:

@"^.*\(([\w\-]+)\)$"

它较短,仅捕获相关文本。

@”(?尝试此操作以获得整个模式:

Regex regex = new Regex(@"^.*\((.+)\)$");

foreach (string item in list)
{
    string result = regex.Match(item).Groups[1].Value;
}
Regex regex = new Regex(@"(?>[^()]+)(?=\)$)");
或者简单地说:

Regex regex = new Regex(@"[^()]+(?=\)$)");

bet·ter/ˈbetər/更优秀或更有效类型或性质的形容词:“希望天气更好”;“我代数比爱丽丝好”。更出色或更有效的副词:“约翰尼如果试一试就会做得更好”;“现在的乐器一般都做得更好”。用更好的名词;哪个更好:《自然历史博物馆》这本书是两本书中最好的一本,“朝着更好的方向发展”。哈哈。更快?更健壮?更灵活?@Killercam:我不得不努力避免仅仅因为它的snark价值而对那篇评论投反对票。不,没有太多的括号。不过它与破折号(
-
)不匹配。现在是这样了。
var result = list.Select(s => Regex.Match(s, @"\((\w+\-\w+)\)").Groups[1].Value)
                 .ToList();
Regex regex = new Regex(@"(?>[^()]+)(?=\)$)");
Regex regex = new Regex(@"[^()]+(?=\)$)");