惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

C
Cybersecurity and Infrastructure Security Agency CISA
月光博客
月光博客
Apple Machine Learning Research
Apple Machine Learning Research
量子位
Hugging Face - Blog
Hugging Face - Blog
罗磊的独立博客
小众软件
小众软件
T
Tailwind CSS Blog
博客园 - 聂微东
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
IT之家
IT之家
V
Visual Studio Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
T
The Exploit Database - CXSecurity.com
T
Tenable Blog
博客园 - 叶小钗
宝玉的分享
宝玉的分享
P
Privacy International News Feed
T
Tor Project blog
博客园_首页
AWS News Blog
AWS News Blog
雷峰网
雷峰网
C
Cisco Blogs
Help Net Security
Help Net Security
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
博客园 - 【当耐特】
T
Threat Research - Cisco Blogs
Last Week in AI
Last Week in AI
K
Kaspersky official blog
人人都是产品经理
人人都是产品经理
Recent Commits to openclaw:main
Recent Commits to openclaw:main
S
Schneier on Security
博客园 - Franky
W
WeLiveSecurity
L
LINUX DO - 热门话题
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
博客园 - 三生石上(FineUI控件)
WordPress大学
WordPress大学
爱范儿
爱范儿
酷 壳 – CoolShell
酷 壳 – CoolShell
P
Proofpoint News Feed
大猫的无限游戏
大猫的无限游戏
腾讯CDC
L
Lohrmann on Cybersecurity
J
Java Code Geeks
美团技术团队
博客园 - 司徒正美
The Cloudflare Blog
V
V2EX

博客园 - 温温恭人

[导入]:创建单色画笔 (Visual C#) [导入]在运行时创建位图 (Visual C#) [导入]创建笔 (Visual C#) [导入]。net图形操作(MSDN) [导入]如何动态生成table(javascript) [导入]javascript分页 [导入]贡献一个新浪的幻灯片(javascript) [导入]解析XML并生成表格 [导入]css控制div居中 [导入]精典的一句 [导入]通过简易的前台代码实现无限二级域名转向(来自无忧 biyuan老矣) [导入]巧妙的让web来执行“计划任务”(转 biyuan老矣 ) [导入]由浅到深了解JavaScript类 [导入]DHTML中重要的属性方法 [导入](转贴)正则表达式学习心得体会(5) [导入](转贴)正则表达式学习心得体会(4) [导入]正则表达式学习心得体会(3)(转) [导入](转贴)正则表达式学习心得体会(1) [导入]使用透明叠加法美化文件上传界面 (http://www.script8.com/bbs/thread.asp?tid=6) [导入]用Javascript实现interface的类似功能 [导入]javascript总结 [导入]将程序集链接到 Word 或 Excel 文件 [导入]input高级限制级用法 [导入] js实现的动态多文件上传 (来自http://cms.bmw.net.cn) [导入]js用FileSystemObject 对象实现文件控制
[导入]正则表达式学习心得体会(2)
温温恭人 · 2007-06-19 · via 博客园 - 温温恭人

再看看另外的例子

  组成有效的电话号码

  假使要从网页上收集顾客格式为xxx-xxxx的7位数字的电话号码,其中x是数字,RE可能会这样写。

  4. \b\d\d\d-\d\d\d\d (查找七位数字之电话号码,如123-1234)
  每一个\d代表一个数字。”-”则是一般的连字符号,为避免太多重复的\d,RE可以改写成如5的方式。

  5. \b\d{3}-\d{4} (查找七位数字电话号码较好的方法,如123-1234)
  在\d后的{3},代表重复前一个项目三次,也就是相等于\d\d\d。

  RE的学习及测试工具 Expresso

  因为RE不易阅读及使用者容易会下错RE的特性,Jim大大开发了一个工具软件Expresso,用来帮助使用者学习及测试RE,除了上面所述的网址之外,也可以上Ultrapico网站(http://www.Ultrapico.com)。安装完Expresso后,在Expression Library中,Jim大大把文章的例子都建立在其中,可以边看文章边测试,也可以试着修改范例所下的RE,马上可以看到结果,小弟觉得非常好用。各位大大可以试试。

  .NET中RE的基础概念

  特殊字符

  有些字符有特别的意义,比如之前所看到的”\b”、”.”、”*”、”\d”等。”\s”所代表的是任意空格符,比如说spaces、tabs、newlines等.。”\w”代表是任意字母或数字字符。

  再看一些例子吧

  6. \ba\w*\b (查找a开头的字,如able)
  这RE描述要查找一个字的开始边界(\b),再来是字母”a”,再加任意数目的字母数字(\w*),再接结束这个字的结束边界(\b)。

  7. \d+ (查找数字字符串)
  “+”和”*”非常相似,除了+至少要重复前面的项目一次。也就是说至少有一个数字。

  8. \b\w{6}\b (查找六个字母数字的字,如ab123c)

  下表为RE常用的特殊字符

  . 除了换行字符的任意字符
  \w 任意字母数字字符
  \s 任意空格符
  \d 任意数字字符
  \b 界定字的边界
  ^ 文章的开头,如”^The'' 用以表示出现于文章开头的字符串为”The”
  $ 文章的结尾,如”End$”用以表示出现在文章的结尾为”End”
  特殊字符”^”及”$”是用来查找某些字必需是文章的开头或结尾,这在验证输入是否符合某一样式时特别用有,比如说要验证七位数字的电话号码,可能会输入如下9的RE。

  9. ^\d{3}-\d{4}$ (验证七位数字之电话号码)

  这和第5个RE相同,但其前后都无其它的字符,也就是整串字符串只有这七个数字的电话号码。在.NET中如果设定Multiline这个选项,则”^”和”$”会每行进行比较,只要某行的开头结尾符合RE即可,而不是整个文章字符串做一次比较。

  转意字符(Escaped characters)

  有时可能会需要”^”、”$”单纯的字面意义(literal meaning)而不要将它们当成特殊字符,此时”\”字符就是用来移除特殊字符特别意义的字符,因此”\^”、”\.”、”\\”所代表的就是”^”、”.”、”\”的字面意义。

  重复前述项目

  在前面看过”{3}”及”*”可以用来重复前述字符,之后我们会看到如何用同样的语法重复整个次描述(subexpressions)。下表是使用重复前述项目的一些方式。

  * 重复任意次数
  + 重复至少一次
  ? 重复零次或一次
  {n} 重复n次
  {n,m} 重复至少n次,但不超过m次
  {n,} 重复至少n次

  再来试一些例子吧

  10. \b\w{5,6}\b (查找五个或六个字母数字字符的字,如as25d、d58sdf等)
  11. \b\d{3}\s\d{3}-\d{4} (查找十个数字的电话号码,如800 123-1234)
  12. \d{3}-\d{2}-\d{4} (查找社会保险号码,如 123-45-6789)
  13. ^\w* (每行或整篇文章的第一个字)
  在Espresso可试试有Multiline和没Multiline的不同。

文章来源:http://www.cnblogs.com/suiqirui19872005/archive/2007/05/14/746046.html