我需要一个正则表达式来出现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