c# - 在 C# 中使用正则表达式提取文本部分

标签 c# java regex

在 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 代码。

最佳答案

首先。您的 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 

关于c# - 在 C# 中使用正则表达式提取文本部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11621614/

相关文章:

java - 将源代码文件夹从现有程序导入到 Eclipse 中

java - 从多个 Java 线程对缓存数据进行只读访问

javascript - 如果正则表达式模式匹配,则字符串中的粗体字

regex - 正则表达式匹配字符串中任意位置的一定数量的数字

c# - 如何检查字符串的前两个值

c# - WPF : Remove control's explicit foreground color

C# 读取注册表 : ProductID returns null in x86 targeted app. "Any CPU"工作正常

c# - 如何使用 NodeView 获得可调整大小和可排序的列?

java - 如何将这样的文件插入 MySQL 数据库

javascript - 如何在 JavaScript 中使用这个正则表达式?