1

.jar!" "に一致するJava正規表現を作成しようとしています

キャッチは、マッチャーに感嘆符を消費させたくないということです。使ってみPattern.compile("\\.jar(?=!)")ましたが失敗しました。感嘆符をエスケープしたように。

誰かがこれを機能させることができますか、それともこれはJDKのバグですか?

更新:私はばかみたいに感じます、Pattern.compile("\\.jar(?=!)")働きます。Matcher.find()の代わりにMatcher.matches()を使用していました。

4

2 に答える 2

1

正規表現の使用は私にとってはうまくいきます(Linux用のSun JDK 1.6.0_02を使用):

import java.util.regex.*;

public class Regex {
        private static final String text = ".jar!";

        private static final String regex = "\\.jar(?=!)";

        public static void main(String[] args) {
                Pattern pat = Pattern.compile(regex, Pattern.DOTALL);
                Matcher matcher = pat.matcher(text);
                if (matcher.find()) {
                        System.out.println("Match: " + matcher.group());
                } else {
                        System.out.println("No match.");
                }
        }
}

プリント:

Match: .jar

(!なし)

于 2008-11-15T21:37:32.387 に答える
0

さらに、あなたはそれをボクシングしてみることができます

Pattern.compile("\\.jar(?=[!])")

Javaは壊れている必要があります:Perl

use strict;
use warnings;


my @data = qw( .jar .jar! .jarx .jarx! );


my @patterns = (
  "\\.jar(?=!)",
  "\\.jar(?=\\!)",
  "\\.jar(?=[!])",
);


for my $pat ( @patterns ){
  for my $inp ( @data ) {
    if ( $inp =~ /$pat/ ) {
      print "$inp =~ $pat \n";
    }
  }
}

->

.jar! =~ \.jar(?=!) 
.jar! =~ \.jar(?=\!) 
.jar! =~ \.jar(?=[!]) 

于 2008-11-15T21:32:17.890 に答える