部分高级正则特性 使用

简介:
一些特殊正则元字符说明 :
  
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)所必需的额外的转义符号。
2279 0
|
1月前
|
Unix Linux
扩展正则表达式
扩展正则表达式
13 4
|
3月前
|
开发框架 .NET C#
C# 10.0中的扩展属性与模式匹配:深入解析
【1月更文挑战第20天】C# 10.0引入了众多新特性,其中扩展属性与模式匹配的结合为开发者提供了更强大、更灵活的类型检查和代码分支能力。通过这一特性,开发者可以在不修改原始类的情况下,为其添加新的行为,并在模式匹配中利用这些扩展属性进行更精细的控制。本文将详细探讨C# 10.0中扩展属性与模式匹配的工作原理、使用场景以及最佳实践,帮助读者更好地理解和应用这一新功能。
|
5月前
|
自然语言处理 Rust 算法
【算法】10. 正则表达式匹配(多语言实现)
给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 . 和 * 的正则表达式匹配。 . 匹配任意单个字符 * 匹配零个或多个前面的那一个元素 所谓匹配,是要涵盖 整个 字符串 s的,而不是部分字符串。
|
7月前
|
PHP 开发者
正则表达式中的【模式修正符】 完美增强字符串处理的能力!
如果你还没有搞懂模式修饰符是什么?那么你必须要看一下这篇文章!!
31 0
正则表达式中的【模式修正符】 完美增强字符串处理的能力!
|
8月前
|
缓存 编译器 C++
C++高级语法
● C++使用class定义一个类,使用struct定义一个结构体 struct的默认成员权限是public,class的默认成员权限是private,除此之外二者基本没有差别。
61 0
|
10月前
|
索引
正则的扩展详解
正则的扩展详解
60 0
|
前端开发
前端学习案例1-正则概述-元字符
前端学习案例1-正则概述-元字符
51 0
前端学习案例1-正则概述-元字符
|
BI Linux
正则表达式的高级用法——正|反向预查
正则表达式的高级用法——正|反向预查
143 1
正则表达式的高级用法——正|反向预查