[英]Need Regex to match a String
我是Java新手。 我需要一個正則表達式來匹配具有這種模式的字符串:
[0-9].[0-9].[0-9]
例如,正則表達式應嚴格匹配5.5.0
或4.6.5
或5.2.2
。
上面的模式匹配像135.9.0
這樣的字符串,它將輸出為5.9.0
但是我不想匹配這種模式。
我應該能夠完全匹配由句點(。)符號分隔的三個數字。
作為.
是正則表達式中的元字符,請像\\.
一樣將其轉義\\.
。 因此表達
[0-9]\.[0-9]\.[0-9]
這可以簡化為
\d\.\d\.\d
甚至
(\d\.){2}\d
這將匹配以分隔的任意3位數字.
。
另請注意,如果要從"string 5.9.0"
提取5.9.0
,請使用上面的正則表達式。 但是,如果要從"5.9.0"
(整個字符串,用於某種驗證)中完全匹配5.9.0
,則應在開頭使用^
,在末尾使用$
。 所以它會像
^(\\d\\.){2}\\d$
最后(由於您的問題非常不清楚,是要匹配一位數字還是要匹配數字序列),要匹配數字序列,請使用[0-9]+
而不是[0-9]
或\\d+
而不是\\d
。
由於點與正則表達式中的每個字符都匹配,因此應使用反斜杠轉義點。
您應在正則表達式的開頭添加一個脫字符號(^),在正則表達式的末尾添加一個美元符號,以將匹配項限制為整個字符串而不是整個字符串的一部分(如果字符串包含您不想要的內容,則可能會匹配)。
^[0-9]\.[0-9]\.[0-9]$
或通過使用匹配預定義的前綴/后綴或開頭的非數字(僅當您的字符串開頭可能有數字以外的其他字符時,否則使用以上命令):
[^0-9]
這個正則表達式可以
\b\d\.\d\.\d\b
\\d
匹配一個數字,即0-9
.
需要使用\\
進行轉義,否則它將與任何字符匹配
正則表達式下面將執行您想要的操作:-
\b\d+\.\d+\.\d+\b
\\d
匹配任何數字。 如果你只是想匹配single
相隔位 .
您可以使用: -
\b\d\.\d\.\d\b
\\b
用於邊界檢查。 嘗試以下代碼:-
String str = "5.0.0 abc 5.6.7 abc 12.45.65 From: 133.5.0<pos1.002otak.com>";
Pattern pattern = Pattern.compile("\\b\\d\\.\\d\\.\\d\\b");
Matcher match = pattern.matcher(str);
while (match.find()) {
System.out.println(match.group(0));
}
OUTPUT
5.0.0
5.6.7
// 12.45.65 is not printed
更新 :-
要在abc1.4.5def
而不是121.4.546
匹配1.4.5
, 121.4.546
使用以下模式:-
[^\\d](\\d\\.\\d\\.\\d)[^\\d]
你可以使用:
^\d\.\d.\d$
要么
\b\d\.\d.\d\b
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.