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 つ以上、\\.
はドット用です。.
の前にバックスラッシュを付けずに記述すると、任意の文字に一致します。