1.1 普通字符
字母、数字、汉字、下划线、以及后边章节中没有特殊定义的标点符号,都是\"普通字符\"。表达式中的普通字符,在匹配一个字符串的时候,匹配与之相同的一个字符。
举例1:表达式 \"c\",在匹配字符串 \"abcde\" 时,匹配结果是:成功;匹配到的内容是:\"c\";匹配到的位置是:开始于2,结束于3。(注:下标从0开始还是从1开始,因当前编程语言的不同而可能不同)
举例2:表达式 \"bcd\",在匹配字符串 \"abcde\" 时,匹配结果是:成功;匹配到的内容是:\"bcd\";匹配到的位置是:开始于1,结束于4。
1.2 简单的转义字符
一些不便书写的字符,采用在前面加 \"\\\" 的方法。这些字符其实我们都已经熟知了。
表达式 \\r, \\n \ \\\\ 可匹配 代表回车和换行符 制表符 代表 \"\\\" 本身 还有其他一些在后边章节中有特殊用处的标点符号,在前面加 \"\\\" 后,就代表该符号本身。比如:^, $ 都有特殊意义,如果要想匹配字符串中 \"^\" 和 \"$\" 字符,则表达式就需要写成 \"\\^\" 和 \"\\$\"。
表达式 \\^ \\$ \\. 可匹配 匹配 ^ 符号本身 匹配 $ 符号本身 匹配小数点(.)本身 这些转义字符的匹配方法与 \"普通字符\" 是类似的。也是匹配与之相同的一个字符。
举例1:表达式 \"\\$d\",在匹配字符串 \"abc$de\" 时,匹配结果是:成功;匹配到的内容是:\"$d\";匹配到的位置是:开始于3,结束于5。
1.3 能够与 '多种字符' 匹配的表达式
正则表达式中的一些表示方法,可以匹配 '多种字符' 其中的任意一个字符。比如,表达式 \"\\d\" 可以匹配任意一个数字。虽然可以匹配其中任意字符,但是只能是一个,不是多个。这就好比玩扑克牌时候,大小王可以代替任意一张牌,但是只能代替一张牌。
表达式 \\d \\w \\s . 可匹配 任意一个数字,0~9 中的任意一个 任意一个字母或数字或下划线,也就是 A~Z,a~z,0~9,_ 中任意一个 包括空格、制表符、换页符等空白字符的其中任意一个 小数点可以匹配除了换行符(\\n)以外的任意一个字符 举例1:表达式 \"\\d\\d\",在匹配 \"abc123\" 时,匹配的结果是:成功;匹配到的内容是:\"12\";匹配到的位置是:开始于3,结束于5。
举例2:表达式 \"a.\\d\",在匹配 \"aaa100\" 时,匹配的结果是:成功;匹配到的内容是:\"aa1\";匹配到的位置是:开始于1,结束于4。
1.4 自定义能够匹配 '多种字符' 的表达式
使用方括号 [ ] 包含一系列字符,能够匹配其中任意一个字符。用 [^ ] 包含一系列字符,则能够匹配其中字符之外的任意一个字符。同样的道理,虽然可以匹配其中任意一个,但是只能是一个,不是多个。
表达式 [ab5@] 可匹配 匹配 \"a\" 或 \"b\" 或 \"5\" 或 \"@\" [^abc] [f-k] [^A-F0-3] 匹配 \"a\之外的任意一个字符 匹配 \"f\"~\"k\" 之间的任意一个字母 匹配 \"A\"~\"F\之外的任意一个字符 举例1:表达式 \"[bcd][bcd]\" 匹配 \"abc123\" 时,匹配的结果是:成功;匹配到的内容是:\"bc\";匹配到的位置是:开始于1,结束于3。
举例2:表达式 \"[^abc]\" 匹配 \"abc123\" 时,匹配的结果是:成功;匹配到的内容是:\"1\";匹配到的位置是:开始于3,结束于4。
1.5 修饰匹配次数的特殊符号
前面章节中讲到的表达式,无论是只能匹配一种字符的表达式,还是可以匹配多种字符其中任意一个的表达式,都只能匹配一次。如果使用表达式再加上修饰匹配次数的特殊符号,那么不用重复书写表达式就可以重复匹配。
使用方法是:\"次数修饰\"放在\"被修饰的表达式\"后边。比如:\"[bcd][bcd]\" 可以写成 \"[bcd]{2}\"。
表达式 {n} {m,n} {m,} ? + * 作用 表达式重复n次,比如:\"\\w{2}\" 相当于 \"\\w\\w\";\"a{5}\" 相当于 \"aaaaa\" 表达式至少重复m次,最多重复n次,比如:\"ba{1,3}\"可以匹配 \"ba\"或\"baa\"或\"baaa\" 表达式至少重复m次,比如:\"\\w\\d{2,}\"可以匹配 \"a12\ 匹配表达式0次或者1次,相当于 {0,1},比如:\"a[cd]?\"可以匹配 \"a\ 表达式至少出现1次,相当于 {1,},比如:\"a+b\"可以匹配 \"ab\ 表达式不出现或出现任意次,相当于 {0,},比如:\"\\^*b\"可以匹配 \"b\ 举例1:表达式 \"\\d+\\.?\\d*\" 在匹配 \"It costs $12.5\" 时,匹配的结果是:成功;匹配到的内容是:\"12.5\";匹配到的位置是:开始于10,结束于14。
举例2:表达式 \"go{2,8}gle\" 在匹配 \"Ads by goooooogle\" 时,匹配的结果是:成功;匹配到的内容是:\"goooooogle\";匹配到的位置是:开始于7,结束于17。
1.6 其他一些代表抽象意义的特殊符号
一些符号在表达式中代表抽象的特殊意义:
表达式 ^ $ 作用 与字符串开始的地方匹配,不匹配任何字符 与字符串结束的地方匹配,不匹配任何字符 进一步的文字说明仍然比较抽象,因此,举例帮助大家理解。
举例1:表达式 \"^aaa\" 在匹配 \"xxx aaa xxx\" 时,匹配结果是:失败。因为 \"^\" 要求与字符串开始的地方匹配,因此,只有当 \"aaa\" 位于字符串的开头的时候,\"^aaa\" 才能匹配,比如:\"aaa xxx xxx\"。
举例2:表达式 \"aaa$\" 在匹配 \"xxx aaa xxx\" 时,匹配结果是:失败。因为 \"$\" 要求与字符串结束的地方匹配,因此,只有当 \"aaa\" 位于字符串的结尾的时候,\"aaa$\" 才能匹配,比如:\"xxx xxx aaa\"。
一些符号可以影响表达式内部的子表达式之间的关系:
表达式 | 作用 左右两边表达式之间 \"或\" 关系,匹配左边或者右边 (1). 在被修饰匹配次数的时候,括号中的表达式可以作为整体被修饰 ( ) (2). 取匹配结果的时候,括号中的表达式匹配到的内容可以被单独得到 举例3:表达式 \"Tom|Jack\" 在匹配字符串 \"I'm Tom, he is Jack\" 时,匹配结果是:成功;匹配到的内容是:\"Tom\";匹配到的位置是:开始于4,结束于7。匹配下一个时,匹配结果是:成功;匹配到的内容是:\"Jack\";匹配到的位置时:开始于15,结束于19。
举例4:表达式 \"(go\\s*)+\" 在匹配 \"Let's go go go!\" 时,匹配结果是:成功;匹配到内容是:\"go go go\";匹配到的位置是:开始于6,结束于14。
举例5:表达式 \"¥(\\d+\\.?\\d*)\" 在匹配 \"$10.9,¥20.5\" 时,匹配的结果是:成功;匹配到的内容是:\"¥20.5\";匹配到的位置是:开始于6,结束于10。单独获取括号范围匹配到的内容是:\"20.5\"。
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- huatuo3.cn 版权所有 湘ICP备2023017654号-3
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务