用正则表达式匹配整个句子

时间:2014-11-26 12:15:23

标签: java regex match

我正在尝试将没有大写字母的句子与Java中的正则表达式匹配:

"Hi this is a test" -> Shouldn't match
"hi thiS is a test" -> Shouldn't match
"hi this is a test" -> Should match

我尝试了以下正则表达式,但它也匹配我的第二个例子(“嗨,这是一个测试”)。

[a-z]+

似乎它只是看着句子的第一个单词。

任何帮助?

4 个答案:

答案 0 :(得分:1)

如果您的字符串包含任何小写字母,

[a-z]+将匹配。

如果你想确保你的字符串不包含大写字母,你可以使用负字符类:^[^A-Z]+$

请注意,这不会处理突出的字符(例如É)。

要使其工作,您可以使用Unicode属性:^\P{Lu}+$
\P表示不属于Unicode类别Lu是具有小写变体类别的大写字母。

答案 1 :(得分:1)

^[a-z ]+$

试试这个。这将验证正确的。

答案 2 :(得分:1)

它不匹配,因为您没有在匹配模式中使用空格,因此您的正则表达式只匹配整个单词而没有空格。

尝试^[a-z ]+$之类的东西(注意空格是方括号)你也可以使用\s这是'空格字符'的简写,但这也可以包括换行和回车等内容所以请注意。

此模式执行以下操作:

^匹配字符串的开头

[a-z ]+匹配任何a-z字符或空格,其中存在1个或更多。

$匹配字符串的结尾。

答案 3 :(得分:1)

在这种情况下,我实际上会建议反对正则表达式,因为你似乎没有使用扩展字符。

而是尝试测试如下:

myString.equals(myString.toLowerCase());