人々が以前にこれを尋ねたことは知っていますが、解決策が見つかりません。
文字列が次のパターンに一致するかどうかを確認しようとしています: 大文字または文字 "x" ではなく、任意の数字 (ドットなどはありません)。
あなたはおそらくしたいです
[xX]\d
[xX]
または のいずれかに一致する文字クラスです。x
X
\d
任意の数字に一致する定義済みの文字クラスです。文字列リテラルでは、バックスラッシュをエスケープする必要があることに注意してください: "[xX]\\d"
.
次の正規表現を使用できます。
"(?i)^x\\d+$"
(?i)
xまたはXに一致する大文字と小文字の一致を無視するためのものですこれの正規表現は[xX]\d
. 括弧内は、一致させたい文字のリストです。大文字または小文字の「X」で一致させて、それを実現します。次に、任意の数字で一致させたいとします。それが \d の機能です。\d は「任意の数字」を意味します。これを Java コードで実行する方法は次のとおりです。
package com.sandbox;
public class Sandbox {
public static void main(String[] args) {
String s = "x9";
System.out.println(s.matches("[xX]\\d"));
}
}
String に 2 つのバックスラッシュがあることに注意してください。\
エスケープ文字だからです。Java では、実際にシンボルを使用する必要があり、そのためには と入力してシンボル\
をエスケープする必要があります。\
\\
あなたの要件を理解した場合:
(x|X)[0-9]+
これは最初に "x" または "X" (| は or) のいずれかに一致します。次に、明らかに数字であるグループ [0-9] の 1 つ以上の文字に一致します。