1

在 Java 中,我可以简单地使用 Regex 提取部分代码或文本,但在 C# 中,我不确定如何做到这一点。例如:

Pattern p = Pattern.compile("(.*?)b(.*?)d(.*?)", Pattern.DOTALL|Pattern.MULTILINE);
Matcher matcher = p.matcher("abcde");
System.out.println(matcher.group(1));   //c 

我在 C# 中找到了很多关于正则表达式的教程,但我发现没有办法做这样简单的事情。但它必须适用于各种类型和数量的文本、数字、符号等,以便我可以使用它来提取部分 HTML 代码。

4

2 回答 2

1

首先。您在 java 中的代码不能按原样工作。

正确的代码(已测试):

Pattern p = Pattern.compile("(.*?)b(.*?)d(.*?)", Pattern.DOTALL|Pattern.MULTILINE);
Matcher matcher = p.matcher("abcde");
if (matcher.find())  // Without this test: [Exception in thread "main" java.lang.IllegalStateException: No match found]
  System.out.println(matcher.group(2));   //c     <--2 instead of 1 

在 C# 中等效(已测试):

Regex r = new Regex("(.*?)b(.*?)d(.*?)", RegexOptions.Singleline | RegexOptions.Multiline);
Match matcher = r.Match("abcde");
Console.WriteLine(matcher.Groups[2]);   //c 
于 2012-07-23T23:19:12.283 回答
0
Regex rx = new Regex("(.*?)b(.*?)d(.*?)");
Match match = rx.Match("abcde");
string found = match.Value;
于 2012-07-23T23:10:16.393 回答