抽空重新整理的笔记, 正则用的少, 重新整理也是想简单过遍脑子,其实还是记不住,vim部分还没完成, 有空再补吧。
正则表达式基础知识
按类型划分
数量词* + ?
负责控制前面匹配字符的次数
符号 | 作用 |
---|---|
星号(*) | 星号代表匹配它前面一个字符任意遍(0或任意次) |
加号(+) | 它也是数量词,表示匹配前面的字符一次或多次(至少一次), 它与星号的差别,星号可以匹配0次,加号则必须一次以上 |
问号(?) | 问号也是一个数量词,它代表匹配前一个字符0或1次 |
Greedy 贪婪模式 默认
Reluctance 勉强模式 *? +? ??
Possessive 占有模式 *+ ++ ?+
中括号
中括号用来表示一个字符集合,如果这个集合有很多元素,如26个字母,数字等,一个个地写在中括号里,未免太麻烦太蠢笨,这时可以用连字符(hyphen)来表示一个范围
符号 | 作用 |
---|---|
[a-z] | 小写字母集合 |
[a-zA-Z] | 大小写集合 |
[^caret] | 匹配任何不在该集合中的字符 |
特殊字符
符号 | 作用 |
---|---|
. | 任何字符 |
\w | 字母和数字 等价于[a-zA-Z0-9] |
\W | 非字母及数字 等价于[^a-zA-Z0-9_] |
\s | 匹配一个空格字符,包括 空格,换行,回车,tab 等价于[\n\r\t\f] |
\S | 匹配非空格字符,等价于[^ \f\n\r\t\v] |
\d | 数字 |
\D | 非数学 |
\r | 匹配一个回车符。等价于 \x0d 和 \cM |
\f | 匹配一个换页符。等价于 \x0c 和 |
\n | 匹配一个换行符。等价于 \x0a 和 \cJ |
\t | 匹配一个制表符。等价于 \x09 和 \cI |
\v | 匹配一个垂直制表符。等价于 \x0b 和 \cK |
大括号
重复前面一个字符的多少遍
符号 | 作用 |
---|---|
{N} | 重复N遍前面字符 |
{n,m} | 重复n到m遍 |
{n,} | 至少n遍 |
{,m} | 至多m遍 |
定位符,边界匹配器
符号 | 作用 |
---|---|
^ | 匹配输入字符串的开始位置 |
$ | 匹配输入字符串的结束位置 |
\b | 匹配单词边界, 也就是指单词和空格间的位置。//例如, ‘er\b’ 可以匹配”never” 中的 ‘er’,但不能匹配 “verb” 中的 ‘er’。 |
\B | 与上面相反, 匹配非单词边界。’er\B’ 能匹配 “verb” 中的 ‘er’,但不能匹配 “never” 中的 ‘er’ |
使用过程中遇到的经验
String uri = "/resources/:resource/actions/:action";
replace替换:resource, :action为([^#/?]+)
// 1.首先 :冒号 确定是: 开头
// 2.括号 () 这里我试验了,拿掉也是可以的, 最好是加上
// 3.\\w 是确定: 后面根的是词,不能是符号
// 4.+ 1次或多次,不能没有,所以不能是*或?
uri.replaceAll(":(\\w+)", "([^#/?]+)");
// 再看这个 ([^#/?]+) 的意义
// 就是在()这个组里,排除 #/? 三个符号,有就不行,
// ^表示排除,+表示1个或多个
Md
[toc]
目录
---
分隔线
>
引用
列表
无序列表*,+,-
无序列表:
- 1级列表
- 2级列表
- 3级列表
有序列表数字加点加空格
1.空格red
2.空格green
加粗**text**
斜体*text*
表格
列1 | 列2 | 列3
-|-|- =====>>>>> 这句是关键
用户1| 访问url | 5-18
用户2| 访问url | 3-18
链接
This is an [example link](http://example.com/).
This is an [example link](http://example.com/ "With a Title").
定变量的形式 [Google][1] [Yahoo][2] or [MSN][3].
[1]: http://google.com/ "Google"
[2]: http://search.yahoo.com/ "Yahoo Search"
[3]: http://search.msn.com/ "MSN Search"
图片
形式1:
![alt text][id]
[id]: /path/to/img.jpg "Title"
形式2:
![alt text](/path/to/img.jpg "Title")