我怎样才能编写一个匹配仅包含问号
的字符串的正则表达式“???” >真
“????” >真
“?”>真
“?一个?” >假
“?a”>假
提前致谢!
编辑: 我错过了2例:
“?”>真
“?? ???” >真
答案 0 :(得分:5)
这就像这样简单:
^[?]+$
表达式要求从开头^
到结尾$
的字符串由问号[?]
(方括号防止解释为元字符)重复一次或多次{ {1}}。
答案 1 :(得分:3)
鉴于字符串可以包含空格(根据编辑),正确的正则表达式是
^[ ?]*[?][ ?]*$
这允许任意数量的空格和问号,并保证至少存在一个问号。
答案 2 :(得分:1)
也许最好逃避问号(因为我总是逃避所有符号):
^\?+$
您也不需要方括号。
答案 3 :(得分:1)
/^(?=\s*\?)[?\s]+$/
解释:
^
匹配字符串的开头
(?= ... )
Lookahead,关于字符串中出现的内容的零宽度断言,此处用于断言:
\s*
任何数量的空白区域,然后是:
\?
字面问号。确保字符串中至少有一个问号。
[?\s]
匹配问号或空格。
+
一次或多次。
$
匹配字符串的结尾。
答案 4 :(得分:0)
将正则表达式用作^\\?+$
String regex = "^\\?+$";
Pattern pattern = Pattern.compile(regex);
System.out.println(pattern.matcher("?").find());//prints true
System.out.println(pattern.matcher("??").find());//prints true
System.out.println(pattern.matcher("????").find());//prints true
System.out.println(pattern.matcher("?a?").find());//prints false
System.out.println(pattern.matcher("?a").find());//prints false