我怎么能写一个匹配只包含问号的字符串的正则表达式
“???” > 真的
“???” > 真的
“?” > 真的
“?一种?” > 假
"?a" > 假
提前致谢 !
编辑:我错过了 2 个案例:
“?” > 真的
“???” > 真的
就像这样简单:
^[?]+$
该表达式要求字符串从头到尾由^
重复一次或多次$
的问号(方括号防止解释为元字符)组成。[?]
+
鉴于字符串可以包含空格(根据编辑),正确的正则表达式是
^[ ?]*[?][ ?]*$
这允许任意数量的空格和问号,并保证至少存在一个问号。
也许转义问号是一个更好的主意(因为我总是转义所有符号):
^\?+$
您也不需要方括号。
/^(?=\s*\?)[?\s]+$/
一个解释:
^
匹配字符串的开头
(?= ... )
Lookahead,关于字符串中即将出现的内容的零宽度断言,这里用于断言:
\s*
任意数量的空白,后跟:
\?
一个字面的问号。确保字符串中至少有一个问号。
[?\s]
匹配问号或空格。
+
一次或多次。
$
匹配字符串的结尾。
使用正则表达式^\\?+$
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