Java正規表現の問題があります。
1 つ以上の数字の後に 1 つの . 文字列で?
"^[\\d]+[\\.]$"
^ = start of string
[\\d] = any digit
+ = 1 or more ocurrences
\\. = escaped dot char
$ = end of string
これがあなたの質問に対する答えだと思います:
String searchText = "asdgasdgasdg a121341234.sdg asdg as12..dg a1234.sdg ";
searchText.matches("\\d+\\.[^.]");
これは「121341234」と一致します。と「1234」。「12」ではありません。
(\\d)+\\.
\\d任意の数字を
+表す
これを参照してください http://www.vogella.com/articles/JavaRegularExpressions/article.html
正規表現では、メタ文字\dは整数を表すために使用されますが、Javaコードで正規表現として表すに\\dは、二重解析が実行されるため、メタ文字を使用する必要があります。
最初にそれを変換する文字列パーサー\d、次にそれを整数メタ文字として解釈する正規表現パーサー(これが私たちが望むものです)。
「1つ以上」の部分には、+貪欲な数量詞を使用します。
を表すために、二重解析シナリオのために.使用します。\\.
つまり、最終的には(\\d)+(\\.)。
\\d+)\\.
\\dは数字用、+は 1 つ以上、\\.はドット用です。.の前にバックスラッシュを付けずに記述すると、任意の文字に一致します。