要找一个数字,它可能有一个负号在最前面,那你就写一个负号加上一个问号,就像这样:
-?
要表示“一个或多个之前的表达式”,应该使用 +
。所以,如果要表示“可能有一个负号,后面跟着一位或多位数字”,可以这样:
-?\\d+
+911 应该用(-|\\+)?\\d+表示,“可能以一个加号或减号开头”。在正则表达式中,用括号将表达式进行分组,用竖线 |
表示或操作。这个正则表达式表示字符串的起始字符可能是一个 -
或 +
,或者二者都没有(因为后面跟着 ?
修饰符)。因为字符 +
在正则表达式中有特殊的意义,所以必须使用 \\
将其转义,使之成为表达式中的一个普通字符。
(-|\\+)?
\\W表示非单词字符,如果W小写,\\w,则表示一个单词字符。
n\\W+ 表示以n及n以后的非单词字符作为划分,when 变成whe,
s.replaceFirst("f\\w+", "located") //替换以f开头的单词
s.replaceAll("shrubbery|tree|herring","banana")//替换这三个单词
应该非常清楚地意识到,表达式 X
通常必须要用圆括号括起来,以便它能够按照我们期望的效果去执行。例如:
abc+
看起来它似乎应该匹配1个或多个abc
序列,如果我们把它应用于输入字符串abcabcabc
,则实际上会获得3个匹配。然而,这个表达式实际上表示的是:匹配ab
,后面跟随1个或多个c
。要表明匹配1个或多个完整的字符串abc
,我们必须这样表示:
(abc)+
教程链接: