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

推荐订阅源

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) [导入]正则表达式学习心得体会(3)(转) [导入]正则表达式学习心得体会(2) [导入](转贴)正则表达式学习心得体会(1) [导入]使用透明叠加法美化文件上传界面 (http://www.script8.com/bbs/thread.asp?tid=6) [导入]用Javascript实现interface的类似功能 [导入]javascript总结 [导入]将程序集链接到 Word 或 Excel 文件 [导入]input高级限制级用法 [导入] js实现的动态多文件上传 (来自http://cms.bmw.net.cn) [导入]js用FileSystemObject 对象实现文件控制
[导入](转贴)正则表达式学习心得体会(4)
温温恭人 · 2007-06-19 · via 博客园 - 温温恭人

21. \b(?<Word>\w+)\b\s*\k<Word>\b (使用自行命名群组抓取重复字)

  使用括号还有许多特别的语法元素,比较通用的列表如下:

  抓取(Captures)
  (exp) 符合exp并抓取它进自动命名的群组
  (?<name>exp) 符合exp并抓取它进命名的群组name
  (?:exp) 符合exp,不抓取它
  Lookarounds
  (?=exp) 符合字尾为exp的文字
  (?<=exp) 符合前缀为exp的文字
  (?!exp) 符合后面没接exp字尾的文字
  (?<!exp) 符合前面没接exp前缀的文字
  批注Comment
  (?#comment) 批注

  Positive Lookaround

  接下来要谈的是lookahead及lookbehind assertions。它们所查找的是目前符合之前或之后的文字,并不包含目前符合本身。这些就如同”^”及”\b”特殊字符,本身并不会对应任何文字(用来界定位置),也因此称做是zero-width assertions,看些例子也许会清楚些。

  (?=exp)是一个”zero-width positive lookahead assertion”。它指的就是符合字尾为exp的文字,但不包含exp本身。

  22. \b\w+(?=ing\b) (字尾为ing的字,比如说filling所符合的就是fill)
(?<=exp)是一个”zero-width positive lookbehind assertion”。它指的就是符合前缀为exp的文字,但不包含exp本身。

  23. (?<=\bre)\w+\b (前缀为re的字,比如说repeated所符合的就是peated)
  24. (?<=\d)\d{3}\b (在字尾的三位数字,且之前接一位数字)
  25. (?<=\s)\w+(?=\s) (由空格符分隔开的字母数字字符串)

  Negative Lookaround

  之前有提到,如何查找一个非特定或非在特定群组的字符。但如果只是要验证某字符不存在而不要对应这些字符进来呢?举个例子来说,假设要查找一个字,它的字母里有q但接下来的字母不是u,可以用下列的RE来做。

  26. \b\w*q[^u]\w*\b (一个字,其字母里有q但接下来的字母不是u)

  这样的RE会有一个问题,因为[^u]要对应一个字符,所以若q是字的最后一个字母,[^u]这样的下法就会将空格符对应下去,结果就有可能会符合二个字,比如说”Iraq haha”这样的文字。使用Negative Lookaround就能解决这样的问题。

  27. \b\w*q(?!u)\w*\b (一个字,其字母里有q但接下来的字母不是u)
  这是”zero-width negative lookahead assertion”。

  28. \d{3}(?!\d) (三个位的数字,其后不接一个位数字)

  同样的,可以使用(?<!exp),”zero-width negative lookbehind assertion”,来符合前面没接exp前缀的文字符串。

  29. (?<![a-z ])\w{7} (七个字母数字的字符串,其前面没接字母或空格)

  30. (?<=<(\w+)>).*(?=<\/\1>) (HTML卷标间的文字)
  这使用lookahead及lookbehind assertion来取出HTML间的文字,不包括HTML卷标。

  请批注(Comments Please)
  括号还有个特殊的用途就是用来包住批注,语法为”(?#comment)”,若设定”Ignore Pattern Whitespace”选项,则RE中的空格符当RE使用时会乎略。此选项设定时,”#”之后的文字会乎略。

  31. HTML卷标间的文字,加上批注

  (?<=   #查找前缀,但不包含它
  <(\w+)> #HTML标签
  )       #结束查找前缀
  .*      #符合任何文字
  (?=     #查找字尾,但不包含它
  <\/\1>  #符合所抓取群组1之字符串,也就是前面小括号的HTML标签
  )       #结束查找字尾

  寻找最多字符的字及最少字符的字(Greedy and Lazy)
  当RE下要查找一个范围的重复时(如”.*”),它通常会寻找最多字符的符合字,也就是Greedy matching。举例来说。

  32. a.*b  (开始为a结束为b的最多字符的符合字)

  若有一字符串是”aabab”,使用上述RE所得到的符合字符串就是”aabab”,因为这是寻找最多字符的字。有时希望是符合最少字符的字也就是lazy matching。只要将重复前述项目的表加上问号(?)就可以把它们全部变成lazy matching。因此”*?”代表的就是重复任意次数,但是使用最少重复的次数来符合。举个例子来说:

  33. a.*?b (开始为a结束为b的最少字符的符合字)

  若有一字符串是”aabab”,使用上述RE第一个所得到的符合字符串就是”aab”再来是”ab”,因为这是寻找最少字符的字。

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

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