私はこの質問をしばらく前に聞いてきましたが、適切な答えを得られなかったので別のショットを付けました。Javaで正規表現を使用して一致することができません
class Test {
public static void main (String[] args) throws java.lang.Exception
{
String file_name = "C:\\Temp\\Test.txt";
String string = FileUtils.readFileToString(new File(file_name), "UTF-8");
String regex = "^(ipv6 pim(?: vrf .*?)? rp-address .*)";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(string);
if (matcher.find()) {
System.out.println("Matcher: " + matcher.group(1));
} else {
System.out.println("No Matches");
}
}
}
ファイルには、750を超える多くの行が含まれていますね。正規表現の値と一致するすべての行を抽出したいと思います。今問題は、私がコードを行った方法は、一致するものを返しません。私は、ファイルの最初の行が正規表現と一致していれば何もしません。私はすべてが新しい行にあるので、問題を引き起こしていると思った。しかし、文字列を単一の行に変換するコードを書くことさえ、パターンが最初に一致しない場合は値を返しません。
サンプル一致する文字列:のIPv6のPIM RPアドレス20:20:20 :: F
あなたの正規表現は機能しません。それを[RegExr](http://www.regexr.com)でテストするとそれが証明されます。 '(ipv6 \ spim \ srp-address \ s([\ d] {2}:)+ :.)' –
私はそれをテストしました。複数行モード(下記参照)を使用している場合や、すべてのテキストを1行に入れる場合は、先頭の '^'(Begin of Line)が問題になる可能性があります。 – CoronA
@CoronAそうですね。問題は主導です^ –