Android 正则表达式
转义字符
\ 转义紧随的元字符
\Q 转义所有紧随的元字符直到\E
\E 与\Q搭配使用,转义包含的所有元字符
\\ 反斜杠
\uhhhh 16进制Unicode字符U+hhhh
\xhh 16进制Unicode字符U+00hh
\cx ASCII控制字符^x(所以\cH表示^H,U+0008)
\a ASCII字符U+0007,BELL
\e ASCII字符U+001b,ESC
\f ASCII字符U+000c
\n ASCII字符U+000a,换行
\r ASCII字符U+000d,回车
\t ASCII字符U+0009,制表位
字符类
[abc] 在集合中的任一字符
[a-c] 在由范围定义的集合中的任一字符
[^abc] 在补集中的任一字符
[[a-f][0-9]] 在并集中的任一字符
[[a-z]&&[jkl]] 在交集中的任一字符
. 任一字符
\d 任一数字字符
\D 任一非数字字符
\s 任一空白字符
\S 任一非空白字符
\w 任一字母字符
\W 任一非字母字符
\p{NAME} 任一属于指定名称字符类的字符
\P{NAME} 任一不属于指定名称字符类的字符
量词
* 0或多个
? 0或1个
+ 1或多个
{n} 恰好n个
{n,} 至少n个
{n,m} 至少n个且不超过m个
<量词> 默认为贪婪量词,贪婪量词之所以称之为“贪婪的”,这是由于它们强迫匹配器读入(或者称之为吃掉)整个输入的字符串,来优先尝试第一次匹配,如果第一次尝试匹配(对于整个输入的字符串)失败,匹配器会通过回退整个字符串的一个字符再一次进行尝试,不断地进行处理直到找到一个匹配,或者左边没有更多的字符来用于回退了。赖于在表达式中使用的量词,最终它将尝试地靠着 1 或 0 个字符的匹配。
<量词>? 勉强量词采用与贪婪量词相反的途径:从输入字符串的开始处开始,因此每次勉强地吞噬一个字符来寻找匹配,最终它们会尝试整个输入的字符串。
<量词>+ 侵占量词始终是吞掉整个输入的字符串,尝试着一次(仅有一次)匹配。不像贪婪量词那样,侵占量词绝不会回退,即使这样做是允许全部的匹配成功。
边界匹配器
^ 行首
$ 行尾
\A 输入的开头
\b 单词边界
\B 非单词边界
\G 上一个匹配的结尾
\z 输入的结尾,仅用于最后的结束符(如果有的话)
\Z 输入的结尾