简体   繁体   English

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

[英]What is the C# equivalent of java.util.regex?

I am converting Java code to C# and need to replace the use of Java's regex. 我正在将Java代码转换为C#,需要替换使用Java的正则表达式。 A typical use is 典型的用途是

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;

which should extract a capture group from a matched target string. 应该从匹配的目标字符串中提取捕获组。 I'd be grateful for simple examples. 我会很感激简单的例子。


EDIT : I have now added the C# equivalent of the code as an answer. 编辑 :我现在已经添加了代码的C#等价物作为答案。

EDIT : Here is a tutorial on the use of the actual expressions. 编辑这是一个关于使用实际表达式的教程

EDIT : Here is a useful comparison of C# and Java (and Perl.) 编辑这是 C#和Java(和Per​​l。) 的有用比较

System.Text.RegularExpressions.Regex class is the .NET Framework equivalent. System.Text.RegularExpressions.Regex是.NET Framework的等价物。 The MSDN page I linked to contains a simple example. 我链接到的MSDN页面包含一个简单的示例。

I created the C# equivalent of the Java code in the question as: 我在问题中创建了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());
}

EDIT (See @Mehrdad's helpful comments) 编辑 (参见@ Mehrdad的有用评论)

The original code was: 原始代码是:

// ...

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM