Java:正则表达式
正则表达式
正则表达式(Regular Expression、regex),及描述某种规则的表达式。通常被用来检索、替换符合某个模式(规则)的文本
很多编程语言支持正则表达式,Java只是其中一种
正则表达式的基本元素
字符 | 含义 | 描述 |
---|---|---|
.(点) | 一个字符的通配符 | 能和回车符外的任何字符匹配匹配除“\n”和"\r"之外的任何单个字符。要匹配包括“\n”和"\r"在内的任何字符,请使用像“[\s\S]”的模式 |
[ ] | 字符集 | 能和括号中描述的范围内任何一个字符匹配,‘-’连接范围的起止,闭区间 |
[ ^ ] | 排斥性字符集 | 与上一项相反 |
^ | 起始位置 | 定位到一行的起始处并向后匹配 |
$ | 结束位置 | 定位到一行的结尾处并向前匹配 |
\b | 单词边界 | 匹配[a-zA-Z_0-9]中的字符,及英文大小写字母与阿拉伯数字 |
\B | 非单词边界 | [ ^\b ] |
\s | 空白符 | 相当于[ \t\n\x0B\f\r ] // \x0B空格符 |
\w | 单词字符 | [\B] |
\W | 非单词字符 | [\b] |
{n} | 匹配次数 | 表明左边匹配符匹配n数 |
( ) | 组 | 按照子表达式分组 |
\ | 转义 | 如 \b |
| | 或 | 逻辑或 a|b 匹配a或者b |
常用等价 / 简写
? → {0,1}
* → {0,}
+ → {1,}
\d → [0-9]
\D → [^0-9]
[A,H,T,W] → A|H|T|W
//简写并非所有语言都支持
语法
正则表达式构成:字符{数量}位置
//基础语法 "^([]{})([]{})([]{})$"
//"开始([包含内容]{长度})([包含内容]{长度})([包含内容]{长度})结束"
记录一个问题
split使用正则表达式实现
String [] strings = new Scanner(System.in).nextLine().split("+");
提示dangling meta character问题出现
正确使用方式为
String [] strings = new Scanner(System.in).nextLine().split("\\+");如同转义字符
String.replace()、replaceAll()等等同理
其他正则字符以此类推
2018/8/2