什么是java.util.regex的C#等价物?

时间:2009-10-17 16:34:24

标签: c# java regex

我正在将Java代码转换为C#,需要替换使用Java的正则表达式。典型的用途是

import java.util.regex.Matcher;
import java.util.regex.Pattern;
//...

String myString = "B12";
Pattern pattern = Pattern.compile("[A-Za-z](\\d+)");
Matcher matcher = Pattern.matcher(myString);
String serial = (matcher.matches()) ? matcher.group(1) : null;

应该从匹配的目标字符串中提取捕获组。我很感激简单的例子。


编辑:我现在已经添加了代码的C#等价物作为答案。

编辑Here is a tutorial关于使用实际表达式。

编辑Here is a useful comparison C#和Java(以及Perl。)

2 个答案:

答案 0 :(得分:13)

System.Text.RegularExpressions.Regex class是.NET Framework的等价物。我链接到的MSDN页面包含一个简单的示例。

答案 1 :(得分:5)

我在问题中创建了C#等效的Java代码:

string myString = "B12";
Regex rx = new Regex(@"[A-Za-z](\\d+)");
MatchCollection matches = rx.Matches(myString);
if (matches.Count > 0)
{
    Match match = matches[0]; // only one match in this case
    GroupCollection groupCollection = match.Groups;
    Console.WriteLine("serial " + groupCollection[1].ToString());
}

编辑(请参阅@ Mehrdad的有用评论)

原始代码是:

// ...

MatchCollection matches = rx.Matches(myString);
foreach (Match match in matches)
{
    GroupCollection groupCollection = match.Groups;
    Console.WriteLine("serial " + groupCollection[1].ToString());
}