前段时间,做程序的时候,想用replaceAll方法,结果报错,后来发现这个方法需要写正则表达式。因为一直没有用过正则表达式,因此用别的方法替代了。
今天,在知道上有人问了repalceAll的用法,于是google一下,发现还是很好用的,记录下来。
public static void main(String[] args) {
String url="/html-123.shtml";
String Url = url.replaceAll("???", "???");
System.out.println(Url);//输出html.jsp=id=123
}
replaceAll改怎么填?
假设id的值只能是0-9的数字,如果可以是任意字符那么\\d修改为.。
public static void main(String[] args) {
String url="/html-123.shtml";
String Url = url.replaceAll("/(.*)-(\\d*).shtml", "$1.jsp=id=$2");
System.out.println(Url);//输出html.jsp=id=123
}
以下转自http://www.blogjava.net/Werther/archive/2009/06/10/281198.html,只是部分。
1.字符
x 字符 x。例如a表示字符a
\\ 反斜线字符。在书写时要写为\\\\。(注意:因为java在第一次解析时,把\\\\解析成正则表达式\\,在第二次解析时再解析为\,所以凡是不是1.1列举到的转义字符,包括1.1的\\,而又带有\的都要写两次)
\0n 带有八进制值 0的字符 n (0 <= n <= 7)
\0nn 带有八进制值 0的字符 nn (0 <= n <= 7)
\0mnn 带有八进制值 0的字符 mnn(0 <= m <= 3、0 <= n <= 7)
\xhh 带有十六进制值 0x的字符 hh
\uhhhh 带有十六进制值 0x的字符 hhhh
\t 制表符 ('\u0009')
\n 新行(换行)符 ('\u000A')
\r 回车符 ('\u000D')
\f 换页符 ('\u000C')
\a 报警 (bell) 符 ('\u0007')
\e 转义符 ('\u001B')
\cx 对应于 x 的控制符
2.字符类[abc] a、b或 c(简单类)。例如[egd]表示包含有字符e、g或d。
[^abc] 任何字符,除了 a、b或 c(否定)。例如[^egd]表示不包含字符e、g或d。
[a-zA-Z] a到 z或 A到 Z,两头的字母包括在内(范围)
[a-d[m-p]] a到 d或 m到 p:[a-dm-p](并集)
[a-z&&[def]] d、e或 f(交集)
[a-z&&[^bc]] a到 z,除了 b和 c:[ad-z](减去)
[a-z&&[^m-p]] a到 z,而非 m到 p:[a-lq-z](减去)
3.预定义字符类(注意反斜杠要写两次,例如\d写为\\d)任何字符
(与行结束符可能匹配也可能不匹配)\d 数字:[0-9]\D 非数字: [^0-9]\s 空白字符:[ \t\n\x0B\f\r]\S 非空白字符:[^\s]\w 单词字符:[a-zA-Z_0-9]\W 非单词字符:[^\w]