正则表达式学习

来源:互联网 发布:oa系统的数据库设计 编辑:程序博客网 时间:2024/06/06 16:28

本篇学习记录主要来自《正则表达式必知必会》以及百度百科,作为本人学习爬虫的一个工具,将记录一些语法类的知识方便自己需要时复习


# 这篇博客是我写的第一篇博客,因为自己比较喜欢涉猎各种各样的知识,借阅各种各样的书刊,所以之前留下了不少读书笔记(记录在本子上),后来发现写字速度远远不及打字速度,而且重新翻阅复习的时候难以找到,故而决定以写博客的方式记录我学习过程的一点一滴。博客大多将以读书笔记记录的形式发布出来,偶尔会添加一些自己的思考。

书写匹配模式的语法:

元字符介绍

  • \
做转义字符时使用。
  • ^
从输入文字的行首进行匹配,如 ^[Aa] 匹配 “absorb”的 a
  • $
从输入文字的行尾进行匹配,跟在子表达式的尾部。如 [Bb]\$ 匹配“absorb” 的 末尾 b
  • *
匹配前面的子表达式(注意单个字符是一种纯文本表达式)0次至任意多次。* 等价于o{0,}   例如,zo*能匹配“z”,也能匹配“zo”以及“zoooo”。
  • +
  匹配前面的子表达式一次或多次(大于等于1次)。例如,“zo+”能匹配“zo”以及“zoo”,但不能匹配“z”。+等价于{1,}
  • ?
  匹配前面的(子表达式)01次,等价于{0,1}。例如,“do(es)?”可以匹配“do”或“does”。  当?紧跟在任何一个其他限制符如(*,+,?,{n}{n,}{n,m})后面时,表示匹配模式是非贪婪的。非贪婪模式尽可能少的匹配所搜索的字符串。默认的贪婪模式则表示尽可能多的匹配所搜索的字符串。  例如,对于字符串“oooo”,“o+”将尽可能多的匹配“o”,得到结果[“oooo”],而“o+?”将尽可能少的匹配“o”,得到结果 ['o', 'o', 'o', 'o']
  • {n}
n为≥0的整数,匹配确定的n次。例如,“o{2}”不能匹配“pop”中的“o”,但是能匹配“shoot”中的两个o
  • {n,}
n是≥0的整数。至少匹配n次。`“o{1,}”等价于“o+”。“o{0,}”则等价于“o*”。例如,“o{2,}”不能匹配“pop”中的“o”,但能匹配“ooooops”中的所有o。`
  • {n,m}
`m和n都是≥0的整数,其中n<=m。表示最少匹配n次且最多匹配m次。`例如,“o{1,3}”将匹配“poooooop”中的前三个o为一组,后三个o为一组。注意在逗号和两个数之间不能有空格。
  • ( pattern)
用于表示子表达式,匹配括号中的pattern并获取这一匹配。若需要匹配圆括号字符的时候,使用转义“\(”或“\)
  • (?:pattern)
非获取的匹配,匹配pattern但不获取这个匹配结果,不进行存储并使用。这在使用或字符“(|)”来组合一个模式的各个部分时很有用。如 “industr(?:y|ies)”就是一个比“industry|industries”更简略的表达式。
  • (?=pattern)
  非获取匹配,在所有匹配pattern的文本 开始处  匹配查找字符串,但不需要获取。如“Windows(?=95|98|NT|2000)”能匹配“Windows2000”中的“Windows”,但不能匹配“Windows3.1”中的“Windows”,也不匹配“SWindows”。
  • (?!pattern)
非获取匹配,在任何不匹配pattern的字符串  开始处  匹配查找字符串,匹配不需要获取。例如“Windows(?!95|98|NT|2000)”能匹配“Windows3.1”中的“Windows”,也能匹配sWindows,但不能匹配“Windows2000”中的“Windows”。
  • (?<=pattern)
非获取匹配,匹配的时候从字符串  结尾处  进行匹配,例如,“(<=95|98|NT|2000)Windows”能匹配“2000Windows”中的“Windows”,不能匹配“3.1Windows”中的“Windows”。
  • (?< !pattern)
非获取匹配,也是从字符串   结尾处  匹配,例如“(?<!95|98|NT|2000)Windows”能匹配“3.1Windows”中的“Windows”,但不能匹配“2000Windows”中的“Windows”。
  • x|yz
匹配x或yz(注意这里是把 | 符号两边分别作为一个整体判断了)。例如,“z|food”能匹配“z”或“food”
- [xyz]字符集合。匹配所包含的任意  一个  字符。例如,“[abc]”可以匹配“plain”中的“a”。
  • [^xyz]
不要的字符集合。匹配括号中不包含的任意  一个  字符。例如,“[^abc]”可以匹配“plain”中的“plin”。
  • \b
匹配一个单词边界。例如,文本“cas  as  asc" 中,“/bas/b”只能匹配第二个as, “/bas”可以匹配as, asc中的as
  • \B
匹配非单词边界。“er\B”能匹配“verb”中的“er”,但不能匹配“never”中的“er”。
  • \d
匹配一个数字字符。等价于[0-9]
  • \D
    匹配一个非数字字符。等价于[^0-9]。

  • \s

匹配任何不可见字符,包括空格、制表符、换页符等等。等价于[ \f\n\r\t\v]
  • \S
匹配任何可见字符。等价于[^ \f\n\r\t\v]
  • \w
匹配包括下划线的任何单词字符。类似但不等价于“[A-Za-z0-9_]”,这里的"单词"字符使用Unicode字符集。
  • \W
匹配任何非单词字符。等价于“[^A-Za-z0-9_]”。

常用正则表达式:
最全的常用正则表达式大全——包括校验数字、字符、一些特殊的需求等等

正则表达式除了“搜索匹配”, 还有“替换” 的功能,鉴于目前的学习仅仅局限于搜索,先跳过了替换这方面功能的学习,有需要时在查看

阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 时来天地皆同力 同力水泥 什么什么力成语 力不同科 齐心同力 同力重工 同什么什么力成语 同力水泥股吧 同力水泥重组 河南同力电力设计有限公司 同力水泥股票 同力驾校 力同科技股份有限公司 陕西同力重工股份有限公司 同力 000885 同化 同化和顺应 同化顺应 同化作用 vv同化融合 民族同化 同化量 同化是什么意思 女子自愿同化变成虫族 同化作用和异化作用 皮亚杰同化和顺应举例 被同化和被排斥哪个更可怕 同化量等于什么 魔物娘把人类同化感染 史莱姆娘包裹同化人类 同名同姓 同名 全国同名 同名查询 同名端 查同名 叶锦书同名 绝句同名诗 全国同名查询网 同名同姓查询