0

次のコードを確認してください。

Pattern pxPattern = Pattern.compile("^.*[0-9]+(%|pt|em).*$");
Matcher pxMatcher = pxPattern.matcher("onehellot455emwohellothree");
System.out.println(pxMatcher.matches());
System.out.println(pxMatcher.group(0));

文字列 445em を減算します。私はcssをチェックするためのコードを使用しています。抽出したいという意味

45em または 50% のような値です。

ありがとう。

4

1 に答える 1

0

まず、キャプチャされたグループはグループ0ではなくグループ1にあります。次に、番号を消費しないように正規表現を変更して、グループに含める必要があります。試す:

Pattern pxPattern = Pattern.compile("^.*?([0-9]+(?:%|pt|em)).*$");
Matcher pxMatcher = pxPattern.matcher("onehellot455emwohellothree");
System.out.println(pxMatcher.matches());
System.out.println(pxMatcher.group(1));

編集:

複数の文字列からすべての値を取得するには、次のパターンを使用できます。

Pattern pxPattern = Pattern.compile("[0-9]+(?:%|pt|em)");
Matcher pxMatcher = pxPattern.matcher("margin: 0pt, 6em, 5%, 2pt");
List<String> propertyValues = new ArrayList<String>();
while (pxMatcher.find()) {
    propertyValues.add(pxMatcher.group());
}
于 2012-09-07T10:40:23.817 に答える