1

Java では、正規表現を使用してコードまたはテキストの一部を簡単に抽出できましたが、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 コードの一部を抽出するために使用できるように、あらゆる種類と数のテキスト、数字、記号などで動作する必要があります。

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 に答える