正则表达式的学习和使用

in 正则表达式 with 0 comment

正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。

正则表达式的转译字符

转译字符含义
\n匹配一个换行符。
\r匹配一个回车符。
\s匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。
\S匹配任何非空白字符。
\w匹配字母或数字或下划线或汉字 等价于 ‘[A-Za-z0-9_]’。
\d匹配数字
\b匹配单词的开始或结束

正则表达式的常用特殊字符

特殊字符含义
$匹配输入字符串的结尾位置。如果设置了 RegExp 对象的 Multiline 属性,则 $ 也匹配 '\n' 或 '\r'。
( )标记一个子表达式的开始和结束位置。子表达式可以获取供以后使用。
*匹配前面的子表达式零次或多次。
+匹配前面的子表达式一次或多次。
.匹配除换行符 \n 之外的任何单字符。
[标记一个中括号表达式的开始。
?匹配前面的子表达式零次或一次,或指明一个非贪婪限定符。
^匹配输入字符串的开始位置,除非在方括号表达式中。当该符号在方括号表达式中使用时,表示不接受该方括号表达式中的字符集合。

正则表达式的使用

比如获得一个VUE文件中的所有label标签里的中文信息
可以先获得label中的信息。使用正则表达式

label=[\"\'].*[\"\']

意思是匹配label="或者'后所有字符,并且后面是"或者'
其中‘[-]‘的意识是表示表达式,‘|’是或的意思。‘.’表示匹配除换行符 \n 之外的任何单字符。‘*’修饰前面的‘.’匹配0次或者多次。

上面一个表达式就可以获得label="用户姓名"这段文本

再通过正则表达式

[\u4e00-\u9fa5]*

去匹配label="用户姓名",就可以获得中文信息“用户姓名”这四个中文
[\u4e00-\u9fa5]的意思是匹配所有中文,‘*’修饰前面的‘[\u4e00-\u9fa5]’,表示多次匹配多个中文,即将单个的中文连成一句,方便查看结果。

另外一种方式,是使用分组来获得中文,正则表达式是

label=[\"\'].*([\u4e00-\u9fa5]*).*[\"\']

括号就表示了将[\u4e00-\u9fa5]*直接分组,完成直接提取中文的作用。