正则-一道正则练习及总结
要求:匹配每对中括号之间的${}里面的内容。
例如[idkey=${param1}] and [CNNAME<>${param2}] or [column3>${param3}] ,需要匹配出param1、param2和param3。
答案:
总结:
1.转义字符:
正则表达式中要匹配的字符本身,很多需要进行转义处理,也就是在原字符前加反斜杠'\'
这些字符包含 ( ) [ ] { } * . ? + $ ^ | \ /
2. 表达式中.*?中 . 的含义
其中 . 表示匹配除换行符/n任意字符字符之外的任意字符。
3.贪婪模式与懒惰模式
贪婪模式,尽可能多地匹配字符。懒惰模式反之。
最明显的表现是,如果使用贪婪模式,只能匹配出来一组数据,从头到尾,很长。而使用懒惰模式则可以达到预想的效果。
匹配数量限制后面加一个问号?为懒惰模式。
4.exec,match和test
regExp.test(string):返回true或者false。
regExp.exec(string):返回内容比较齐全,支持子表达式的匹配。
string.match(regExp):返回值数组中除了匹配到的字符串没有任何其他信息。
5. regExp的lastIndex属性
lastIndex 属性用于规定下次匹配的起始位置。
该属性是可读可写的。
在全局匹配过程中,没匹配到一条自动加一,当方法 exec() 或 test() 再也找不到可以匹配的文本时,它们会自动把 lastIndex 属性重置为 0。
6. 正则中的^
情况1:表示以XX开头,如果设置了 RegExp 对象的 Multiline 属性,^ 也匹配 ‘\n' 或 ‘\r' 之后的位置。
情况2:出现在[]中表示取反,非XX的意思