摘要: 用字符组和量词可以匹配引号字符串,也可以匹配 HTML tag,如果需要用正则表达式匹配身份证号码,依靠字符组和量词能不能做到呢? 身份证号码是一个长度为15或18个字符的字符串,如果是15位,则全部由数字组成,首位不能为0;如果是18位,则前17位全部是数字,末位可能是数字,也可能是x。规则非常明 阅读全文
posted @ 2018-10-20 14:19 gaara724 阅读(1056) 评论(0) 推荐(0) 编辑
摘要: 前面讲解了匹配优先量词和忽略优先量词,现在介绍量词的转义 。 在正则表达式中,*、+、?等作为量词的字符具有特殊意义,但有些情况下只希望表示这些字符本身,此时就必须使用转义,也就是在它们之前添加反斜线\。 对常用量词所使用的字符+、*、?来说,如果希望表示这三个字符本身,直接添加反斜线,变为\+、\ 阅读全文
posted @ 2018-10-20 11:16 gaara724 阅读(7608) 评论(0) 推荐(0) 编辑
摘要: 也有些时候,确实需要用到.*(或者[\s\S]*),比如匹配HTML代码中的JavaScript示例就是如此。 匹配的模式仍然是:匹配open tag和close tag,以及它们之间的内容。open tag是 ,这两段的内容是固定的,非常容易写出对应的表达式,但之间的内容怎么匹配呢?在JavaSc 阅读全文
posted @ 2018-10-19 16:48 gaara724 阅读(753) 评论(0) 推荐(0) 编辑
摘要: 因为点号能匹配几乎所有的字符,所以实际应用中许多人图省事,随意使用.*或.+,结果却事与愿违,下面以双引号字符串为例来说明。 之前我们使用表达式"[^"]*"匹配双引号字符串,而"图省事"的做法是".*"。通常这么用是没有问题的,但也可能有意外,例2-12就说明了一种如此。 例2-12 "图省事"的 阅读全文
posted @ 2018-10-19 16:31 gaara724 阅读(1465) 评论(0) 推荐(0) 编辑
摘要: 上一章讲到了各种字符组,与它相关的还有一个特殊的元字符:点号.。一般文档都说,点号可以匹配"任意字符",点号确实可以匹配"任意字符",常见的数字、字母、各种符号都可以匹配,如例2-10所示。 例2-10 点号.的匹配 有一个字符不能由点号匹配,就是换行符\n。这个字符平时看不见,却存在,而且在处理时 阅读全文
posted @ 2018-10-19 16:23 gaara724 阅读(24762) 评论(0) 推荐(1) 编辑
摘要: 正则表达式的功能很多,除去之前介绍的验证(字符串能否由正则表达式匹配),还可以从某个字符串中提取出某个字符串能匹配的所有文本。 上一章提到,re.search()如果匹配成功,返回一个MatchObject对象。这个对象包含了匹配的信息,比如表达式匹配的结果,可以像例2-7那样,通过调用MatchO 阅读全文
posted @ 2018-10-19 15:31 gaara724 阅读(4463) 评论(0) 推荐(0) 编辑
摘要: {m,n}是通用形式的量词,正则表达式还有三个常用量词,分别是+、?、*。它们的形态虽然不同于{m,n},功能却是相同的(也可以把它们理解为"量词简记法"),具体说明见表2-2。 表2-2 常用量词 常用量词 {m,n}等价形式 说明 * {0,} 可能出现,也可能不出现,出现次数没有上限 + {1 阅读全文
posted @ 2018-10-19 15:07 gaara724 阅读(780) 评论(0) 推荐(0) 编辑
摘要: 根据上一章的介绍,可以用字符组[0-9]或者\d匹配单个数字字符。现在用正则表达式来验证更复杂的字符串,比如大陆地区的邮政编码。 粗略来看,邮政编码并没有特殊的规定,只是6位数字构成的字符串,比如201203、100858,所以用正则表达式来表示就是\d\d\d\d\d\d,如例2-1所示,只有同时 阅读全文
posted @ 2018-10-19 14:47 gaara724 阅读(392) 评论(0) 推荐(0) 编辑
摘要: 前面介绍了常用的字符组,但是在某些文档中,你可能会发现类似[:digit:]、[:lower:]之类的字符组,看起来不难理解(digit就是"数字",lower就是"小写"),但又很奇怪,它们就是POSIX字符组(POSIX Character Class)。因为某些语言的文档中出现了这些字符组,为 阅读全文
posted @ 2018-10-19 14:32 gaara724 阅读(1100) 评论(0) 推荐(0) 编辑
摘要: 以上介绍了字符组的基本功能,它们在常用的语言中都有提供;还有些语言中为字符组提供了更强大的功能,比如Java和.NET就提供了字符组运算的功能,可以在字符组内进行集合运算,在某些情况下这种功能非常实用。 如果要匹配所有的元音字母(为讲解简单考虑,暂时只考虑小写字母的情况),可以用[aeiou],但是 阅读全文
posted @ 2018-10-19 11:38 gaara724 阅读(614) 评论(0) 推荐(0) 编辑