在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#中找到了很多关于Regex的教程,但我发现没办法做这样简单的事情。但它必须处理各种类型和数量的文本,数字,符号等,以便我可以使用它来提取HTML代码的部分内容。
答案 0 :(得分: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
答案 1 :(得分:0)
Regex rx = new Regex("(.*?)b(.*?)d(.*?)");
Match match = rx.Match("abcde");
string found = match.Value;