最近我开始在Java中使用正则表达式,遇到了一个奇怪的表达式。
这个问题要求找到只包含字母并且最多有一个句号结尾的“单词”。 例如,如果我输入字符串:
one two. wr7ng not1 three. nope..
引擎将会匹配到“one”、“two”和“three”这三个单词。解决此问题的方法是使用以下模式:
for (String tok : s.split(" ")) {
if (tok.matches("[a-zA-Z]+//.?")) {
// code done to record successful match
}
}
两个斜杠代表什么意思?我将这个表达式与另一个进行了比较:
[a-zA-Z]+.?
我发现只有后者在最后一个位置(即句点)错误地接受了数字。这是唯一的区别吗?
.
是,如果要像普通的.
一样使用它,则必须对其进行转义。 - Hunter McMillen