Java
 Computer >> コンピューター >  >> プログラミング >> Java

Java正規表現を使用して文字列から数値を抽出する

以下は、Javaで正規表現を使用して文字列から数値を抽出する方法を示す例です。

文字列を解析してそこから情報を抽出できることは、すべてのテスターが持つべき重要なスキルです。これは、APIをテストするときに特に役立ち、JSONまたはXML応答を解析する必要があります。

次のJava正規表現の例は、文字列から数字または数字を抽出することに焦点を当てています。

文字列からすべての数値を抽出
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class RegexExamples {
    public static void main(String[]args) {
        Pattern p = Pattern.compile("\\d+");
        Matcher m = p.matcher("string1234more567string890");
        while(m.find()) {
            System.out.println(m.group());
        }
    }
}

出力:

1234
567
890

関連:

  • JavaでStringをIntに変換する方法
  • Javaで文字列を逆にする方法
  • Javaで文字列を比較する方法
文字列からn番目の数字を抽出

文字列から特定の数値のみを抽出する場合は、group()にインデックスを指定できます。 機能。

たとえば、文字列string1234more567string890から2番目の数字のセットのみを抽出したい場合 、つまり567 次に、次を使用できます:

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class RegexExamples {
    private static final Pattern p = Pattern.compile("[^\\d]*[\\d]+[^\\d]+([\\d]+)");
    public static void main(String[] args) {
        // create matcher for pattern p and given string
        Matcher m = p.matcher("string1234more567string890");

        // if an occurrence if a pattern was found in a given string...
        if (m.find()) {
            System.out.println(m.group(1)); // second matched digits
        }
    }
}

出力:

567

パターンの説明[^\d]*[\d]+[^\d]+([\d]+)

  • 数字以外のものは無視してください
  • 数字(最初の数字)を無視する
  • 数字以外は無視してください
  • 2番目の番号をキャプチャします
タグ属性から番号を抽出

XMLまたはHTMLタグを処理する場合、属性から値を抽出する必要がある場合があります。たとえば、次のタグについて考えてみます

<result name="response" numFound="9999" start="0">

番号9999を抽出するには 次のコードを使用できます:

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class RegexExamples {
    public static void main(String[]args) {
        Pattern pattern = Pattern.compile("numFound=\"([0-9]+)\"");
        Matcher matcher = pattern.matcher("");

        if (matcher.find()) {
            System.out.println(matcher.group(1));
        }
    }
}

出力:

9999
数字と文字を含む文字列を抽出します

Java正規表現を使用して、数字と文字を含む文字列の一部を抽出できます。この文字列がSample_data = YOUR SET ADDRESS IS 6B1BC0 TEXTであるとします。 6B1BC0を抽出します これは6文字の長さです 、使用できます:

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class RegexExamples {
    public static void main (String[] args) {
        Pattern p = Pattern.compile("YOUR SET ADDRESS IS\\s+([A-Z0-9]{6})");
        Matcher n = p.matcher("YOUR SET ADDRESS IS 6B1BC0 TEXT");
        if (n.find()) {
            System.out.println(n.group(1)); // Prints 123456
        }
    }
}

出力:

6B1BC0
正規表現を使用してキーと値のペアを抽出します

この形式の文字列があるとしますbookname=testing&bookid=123456&bookprice=123.45 キーと値のペアbookid=123456を抽出します 使用します:

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class RegexExamples {
    public static void main(String[] args) {
        String s = "bookname=cooking&bookid=123456&bookprice=123.45";
        Pattern p = Pattern.compile("(?<=bookid=)\\d+");
        Matcher m = p.matcher(s);
        if (m.find()) {
            System.out.println(m.group());
        }
    }
}

出力:

123456

  1. Javaの入力文字列から数値を抽出するにはどうすればよいですか?

    java.lang.String クラスは、文字列を処理するためのメソッドのかなりの尺度を提供します。これらのメソッドを使用すると、トリミング、連結、変換などの文字列に対する操作を実行できます。 および比較 。 replaceAll()を使用して、指定された文字列から数値を抽出できます。 文字列のメソッド クラス。 例 import java.util.Scanner; public class StringExtractTest {    public static void main(String[] args) {       Str

  2. Pythonを使用して文字列から数値を抽出するにはどうすればよいですか?

    文字列から各桁を抽出するには- >>> str1='a34e 345 bcd 5he 78 xyz' >>> for s in str1: if s.isdigit():print (s) 3 4 3 4 5 5 7 8 単語がスペース文字で区切られている文字列から整数のみを抽出するには- >>> str1='h3110 23 cat 444.4 rabbit 11 2 dog' >>> for s in str1.split(): if s.isdigit(): print ((s))