正则的[]与()
對正則的模糊不清, 造就了今天的這篇文章
可以配合這個正則測試工具?http://tool.oschina.net/regex 閱讀本文
首先是 [] 這個, 這個不管里邊寫多少, 寫的是什么, 終究只能匹配一個字符, 而不是多個.
比如 [15|13] 這個匹配出來的是 1或5或|或3 (注: 也就是說任何正則里的特殊字符, 除^在最前外, 在[]里, 都當作是待匹配的一個字符來看待),?而不是15或13, 如果需要匹配的結果是后者, 可以使用()
即(15|13), ?關于(), 他匹配出的是一個串中的子字符串
比如匹配身份證的正則 ?^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|X)$?
大量使用了(), 說明了在匹配的結果中, 前6位, 然后4位, 2位, 2位 3位, 1位都可以去捕獲
比如 410181 2016 12 20 121 X
當然了, 目前還沒有這個身份證號碼了, 中間我以空格形式格開了, 每個部分, 都可以在匹配結果中去捕獲到, 這樣做, 個人理解可以使獲取某些值, 比如說, 出生在哪年, 哪月 更容易得到, 另外, 也方便進一步的驗證了.
關于捕獲, 以及后向(一說反向, 一說逆向), 可以參考這里的說明?http://www.regexlab.com/zh/regref.htm 使用瀏覽器搜索 反向引用
關于 ?() ?可以參考我的?這篇日志
轉載于:https://www.cnblogs.com/debmzhang/p/3953256.html
總結
- 上一篇: CentOS常用到的查看系统命令
- 下一篇: Spring源码深度解析第2天