Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
221 views
in Technique[技术] by (71.8m points)

Java: Regex: +Quantifier not working

So "XXXXX**".matches("[X{9,11}\*{2,3}]") returns false as expected... But, "XXXXX**".matches("[X{9,11}\*{2,3}]+") returns true. Am I using the + quantifier correctly? (I want the second one to also return false)

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

[...] matches any character defined in the character class, so [X{9,11}\*{2,3}] actually means, a single character which is: X, or open brace, or 9, or comma, or 1, or 1 (yes you have it duplicated), or backslash, or asterisk....

So as your string have more than character in your string to-be-matched, such pattern will not match.

When you add a +, it means matching a string with 1 or more [ X or asterisk or....], so it match

I believe what you really want to do is using a group.

So the regex looks like (X{9,11}*{2,3}])+


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...