今天笔试题两道判断与正则表示匹配的题,于是我痛下决心要学号正则表达式!
原题回忆:能被'^\d{1,3}(,{3})*$'该正则表达式匹配的是()
A.'2,23,4321'
B.'12,23,345'
C.'1234'
D.'6,368,745'
首先分析下,我认为这道题应该选D,但是第二个括号里感觉少了东西,否则正确的正确匹配应该是1,,,这种出现三个三个的逗号。写了个代码检验,按题干的正则表达式选项结果都是false,后一个括号里{3}前加上\d,D选项结果才是true:结果如下:
public static void main(String[] args) {
String s = "6,368,745";
boolean b = s.matches("^\\d{1,3}(,\\d{3})*$");
System.out.println(b);
}
由于正则表达式规则还挺多的,要用的时候再去查去用就好了,这里总结下我这里碰到的正则表达式的知识点:
1. 基本组成
Brocket:括号
Caret:插入符号
Dollars:美元符号
2. 几种括号
[ 方括号:内包括需要匹配的字符;
{ 花括号:指定匹配字符的数量;
( 圆括号:用来分组。
3.开始结束符号
^:表示开始;$表示结束
4.一些快捷命令
可以用\d代替[0-9]:表示匹配0至9的数字
可以用\w代替[a-z][0-9][_]
\s代表任意空白符
\b单词的开始或结束
*:0次或多次发生
+:至少一次发生
?:0或1次发生