部分高级正则特性 使用

简介:
一些特殊正则元字符说明 :
  
1 .   *?  和  +?  和 {n , } ?   懒惰匹配 
   
1.1  非懒惰                   ↓
    echo 
" ab2c121a "   | perl  - ne  ' print $1 if /(.*)"d/; '     # print ab2c12
   
1.2  懒惰                       ↓
    echo 
" ab2c121a "   | perl  - ne  ' print $1 if /(.*?)"d/; '     # print ab
  
2 .   回溯引用和前后查找 :
   
2.1  向前查找   ( ?=.. )                   ↓
    echo 
" ab2c121a "   | perl  - ne  ' print $1 if /(.*?)(?=2)/; '    # print ab
   
2.2  向后查找 ( ?<=.. )                 ↓
    echo 
" ab2c121a "   | perl  - ne  ' print $1 if /(?<=2)(.*)(?=2)/; '   # print c1
   
2.3  负向 - / 后 查找  ( ?!.. ) ( ?<!.. )   
    
# 不能匹配 ..                               ↓
    
echo  " ab2c121a "   | perl  - ne  ' print $1 if /(?<!2)(c.*)/; '      # print 无
    
echo  " ab2c121a "   | perl  - ne  ' print $1 if /(?<!3)(c.*)/; '      # print c121a
   
2.4  条件  ? ()   =   if     ? () |   =   if   else
    
#  ?()  例如  <p> </p> 必须同时出现                ↓      ↓  
    
echo  " <p>xx</p> " | perl  - ne  ' print $2  if /(<p>)?("w*)(?(1)<"/p>)/ '     # print  xx
    
echo  " <p>xx " | perl  - ne  ' print $2,""n" if /(<p>)?("w*)(?(1)<"/p>)/ '      # print 空
    
echo  " xx " | perl  - ne  ' print $2 if /(<p>)?("w*)(?(1)<"/p>)/ '      # print xx
    # ?()|  例如 还是上面的, 
    # 当 有<p> 可以接</p> 也可以接 数字结尾                            ↓

echo 
" <p>xx1</p> " | perl  - ne  ' print $2  if /(<p>)?("w*)(?(1)<"/p>|"d)/ '    # print xx1

echo "<p>xx1"|perl -ne 'print $2  if /(<p>)?("w*)(?(1)<"/p>|"d)/'    # print xx

本文转自博客园刘凯毅的博客,原文链接:部分高级正则特性 使用,如需转载请自行联系原博主。

目录
相关文章
|
JavaScript 前端开发 Java
《正则表达式经典实例(第2版)》——1.3 正则表达式工具
除非已经拥有了相当长的使用正则表达式编程的经验,否则建议你先在一个工具中试验一下正则表达式,而不是直接在源代码中使用它们。本章和第2章中提供的正则表达式示例都是原始正则表达式,其中并不包含编程语言(即使是Unlx shell)所必需的额外的转义符号。
2395 0
|
7月前
|
Python
正则表达式高级用法
正则表达式是强大的文本匹配工具,常用于搜索、匹配和验证字符串。高级用法包括:捕获组(区分需要提取的内容)、非捕获组(减少开销)、零宽断言(定位匹配位置)、反向引用(匹配相同内容)、嵌入代码(实现复杂逻辑)、贪婪与非贪婪匹配(控制匹配范围)和递归匹配(处理嵌套结构)。了解这些高级技巧能提升字符串操作效率。示例展示了验证Email、电话号码、提取URL和清理多余空格的正则表达式应用。
|
7月前
|
数据采集 自然语言处理 Unix
01. 正则表达式概述
01. 正则表达式概述
37 0
|
7月前
|
Unix Linux
扩展正则表达式
扩展正则表达式
48 4
|
7月前
|
开发框架 .NET C#
C# 10.0中的扩展属性与模式匹配:深入解析
【1月更文挑战第20天】C# 10.0引入了众多新特性,其中扩展属性与模式匹配的结合为开发者提供了更强大、更灵活的类型检查和代码分支能力。通过这一特性,开发者可以在不修改原始类的情况下,为其添加新的行为,并在模式匹配中利用这些扩展属性进行更精细的控制。本文将详细探讨C# 10.0中扩展属性与模式匹配的工作原理、使用场景以及最佳实践,帮助读者更好地理解和应用这一新功能。
|
PHP 开发者
正则表达式中的【模式修正符】 完美增强字符串处理的能力!
如果你还没有搞懂模式修饰符是什么?那么你必须要看一下这篇文章!!
67 0
正则表达式中的【模式修正符】 完美增强字符串处理的能力!
|
索引
正则的扩展详解
正则的扩展详解
91 0
|
前端开发
前端学习案例1-正则概述-元字符
前端学习案例1-正则概述-元字符
74 0
前端学习案例1-正则概述-元字符
|
前端开发
前端学习案例4-正则概述-字符组的简写
前端学习案例4-正则概述-字符组的简写
59 0
前端学习案例4-正则概述-字符组的简写
|
BI Linux
正则表达式的高级用法——正|反向预查
正则表达式的高级用法——正|反向预查
188 1
正则表达式的高级用法——正|反向预查