1. ホーム
  2. java

[解決済み] Javaで正規表現を使って値を抽出する

2022-04-21 21:13:16

質問

ラフな形の文字列がいくつかあります。

[some text] [some number] [some more text]

Java Regexクラスを使って、[ある数字]のテキストを抽出したい。

使いたい正規表現は大体わかっています(提案は大歓迎です)。私が本当に興味があるのは、正規表現文字列を取得し、ソースデータ上でそれを使用して[ある数字]の値を生成するためのJavaコールです。

EDIT: 付け加えると、私は1つの[some number]にしか興味がありません(基本的に、最初のインスタンス)。ソースの文字列は短いので、[some number]の複数回の出現を探すつもりはありません。

どのように解決するのですか?

完全な例です。

private static final Pattern p = Pattern.compile("^([a-zA-Z]+)([0-9]+)(.*)");
public static void main(String[] args) {
    // create matcher for pattern p and given string
    Matcher m = p.matcher("Testing123Testing");

    // if an occurrence if a pattern was found in a given string...
    if (m.find()) {
        // ...then you can use group() methods.
        System.out.println(m.group(0)); // whole matched expression
        System.out.println(m.group(1)); // first expression from round brackets (Testing)
        System.out.println(m.group(2)); // second one (123)
        System.out.println(m.group(3)); // third one (Testing)
    }
}

最初の数字を探すのだから、このような正規表現が使える。

^\D+(\d+).*

m.group(1) は、最初の数字を返します。なお、符号付き数値はマイナスを含むことができる。

^\D+(-?\d+).*