我需要一個正則表達式來出現0到7個字母或0到7個數字。正則表達式或OR兩個範圍正則表達式
例如:匹配:1234
,asdbs
不匹配:123456789
,absbsafsfsf
,asf12
我試過([a-zA-Z]{0,7})|([0-9]{0,7})
,但這不起作用。 我哪裏錯了?
我需要一個正則表達式來出現0到7個字母或0到7個數字。正則表達式或OR兩個範圍正則表達式
例如:匹配:1234
,asdbs
不匹配:123456789
,absbsafsfsf
,asf12
我試過([a-zA-Z]{0,7})|([0-9]{0,7})
,但這不起作用。 我哪裏錯了?
你可以試試這個Regex
:
String regex = "\\p{Alnum}{0,7}";
正則表達式\p{Alnum}
包括所有的字母和數字。
幾個問題:(1)'\ p {Alpha}'只匹配字母;你正在考慮'\ p {Alnum}'。 (2)您需要轉義Java字符串文字的反斜線。 (3)「{0,7}」中不應有空格。 (4)無論如何,這將不起作用,因爲OP要求所有字母**或**全部數字,而不是混合物。 –
哦,哦對不起!我已更新,是的,你是對的。謝謝!順便提一下,問題2和問題3不是問題,因爲Intellij IDE會自動添加和刪除某些內容,但是您是對的。如果你使用Intellij,你會知道在複製和粘貼時會發生什麼...... –
是的,這不會工作,因爲我需要所有數字或所有字母。 – Ravindra
您正在使用或錯誤。該結構是(match1|match2)
,但你現在有(match1)|(match2)
你的正則表達式應該是:([a-zA-Z]{0,7}|[0-9]{0,7})
您可以使用模式\b([a-zA-Z]{1,7}|[1-9]{1,7})\b
匹配:
public static void main(String[] args) {
String input = "- 1234, asdbs 123456789, absbsafsfsf, asf12";
Pattern pattern = Pattern.compile("\\b([a-zA-Z]{1,7}|[1-9]{1,7})\\b");
Matcher matcher = pattern.matcher(input);
List<String> listMatches = new ArrayList<String>();
while(matcher.find())
{
listMatches.add(matcher.group(1));
}
for(String s : listMatches)
{
System.out.println(s);
}
}
輸出:
1234
asdbs
你能展示他們可能在文件/變量中看到什麼樣的匹配嗎?否則,很難知道你在做什麼錯誤 –
「{0,7}」的缺省情況,喜歡使用「{1,7}」? – Rao