您现在的位置是:首页 > 正文

正则表达式总结

2024-04-01 01:00:38阅读 2
正则表达式

//元字符
.     换行符以外任意字符
\w    字母/数字/下划线/汉字
\s    任意空白符
\d    数字
\b    单词开始和结尾
^     字符串开始
$     字符串结束

//字符转义
使用\来取消字符的特殊意义

//重复
*     重复任意次
+     重复一次或多次
?    重复零次或一次
{n}   重复n次
{n,}  重复n次以上
{n,m} 重复n到m次

//字符类
[aeiou]    匹配aeiou任何一个英文字母
[0-9]      匹配0到9任何一个数字

//分支条件
|    匹配成功,就不再继续匹配。\d{4}|\d{5}

//分组
(01\d){5}    分组内容重复5次

//反义
\D          大写后匹配非数字
[^aeiou]    匹配除aeiou以外任意字符

//后向引用
\1           分组1匹配的文本,\b(\w+)\b\s+\1\b匹配像go go重复单词
(exp)        匹配exp并捕获文本到命名组里
(?<name>exp) 匹配exp并捕获文本到名称为name的组里
(?:exp)      匹配exp,不捕获文本,也不分配组号
(?=exp)      匹配exp前面的位置
(?<=exp)     匹配exp后面的位置
(?!exp)      匹配后面不是exp的位置
(?<!exp)     匹配前面不是exp的位置
(?#comment)  注释

//贪婪与懒惰
a.*?b    匹配最短的,以a开始,以b结束的字符串。
当正则表达式中包含能接受重复的限定符时,通常的行为是(在使整个表达式能得到匹配的前提下)匹配尽可能多的字符,这被称为贪婪匹配。懒惰匹配,也就是匹配尽可能少的字符,化为懒惰匹配模式,只要在它后面加上一个问号?//处理选项
IgnoreCase   忽略大小写
Multiline    多行模式
Singleline   单行模式,更改.的含义,使它与每一个字符匹配(包括换行符\n)。
IgnorePatternWhitespace    忽略空白
ExplicitCapture            显式捕获

//平衡组/递归匹配
平衡组的一个最常见的应用就是匹配HTML。
<                         #最外层的左括号
    [^<>]*                #最外层的左括号后面的不是括号的内容
    (
        (
            (?'Open'<)    #碰到了左括号,在黑板上写一个"Open"
            [^<>]*        #匹配左括号后面的不是括号的内容
        )+
        (
            (?'-Open'>)   #碰到了右括号,擦掉一个"Open"
            [^<>]*        #匹配右括号后面不是括号的内容
        )+
    )*
    (?(Open)(?!))         #在遇到最外层的右括号前面,判断黑板上还有没有没擦掉的"Open";如果还有,则匹配失败

>                         #最外层的右括号

//其他
\n    换行符
\t    制表符
\r    回车
   

 

转载于:https://www.cnblogs.com/kerwincui/p/9295097.html

网站文章

  • 使用双重循环根据用户输入的数字,输出等腰三角形

    public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println(&qu...

    2024-04-01 01:00:35
  • matlab 空间模态,matlab中使用VMD(变分模态分解)

    matlab 空间模态,matlab中使用VMD(变分模态分解)

    使用计算出的IMF绘制多分量信号的希尔伯特频谱。将频率范围限制为[0,40] Hz。分段信号的VMD生成一个由二次趋势,线性调频信号和余弦组成的分段复合信号,在t = 0.5时,两个恒定频率之间会发生急剧过渡 。x(t)= 6t2 + cos(4πt+10πt2)+ {cos(60πt),cos(100πt-10π),t≤0.5,t&gt; 0.5。信号以1 kHz采样1秒。绘制每个单独的分...

    2024-04-01 01:00:28
  • BUUCTF Reverse/特殊的 BASE64

    BUUCTF Reverse/特殊的 BASE64

    BUUCTF Reverse/特殊的 BASE64先看文件信息,没有加壳用IDA64位打开,看题目描述就知道这是base码表做了变换跟进查看base64加密有一个拷贝函数然后下面就是正常的加密了变换过的码表然后找个网站在线自定义base64编解码解出flagflag{Special_Base64_By_Lich}...

    2024-04-01 01:00:03
  • https://download.docker.com/linux/centos/2/x86_64/stable/repodata/repomd.xml: [Errno 14] HTTPS Error

    使用Red Hat7安装docker时报以下错误 https://download.docker.com/linux/centos/2/x86_64/stable/repodata/repomd.xm...

    2024-04-01 00:59:55
  • 设计模式学习笔记(五) - 观察者模式 Observer

    设计模式学习笔记(五) - 观察者模式 Observer

    设计模式学习笔记(五) - 观察者模式 Observer

    2024-04-01 00:59:49
  • 编程必备基础知识|计算机组成原理篇(02):计算机的分类

    编程必备基础知识|计算机组成原理篇(02):计算机的分类

    计算机基础方面的知识,对于一些非科班出身的同学来讲,一直是他们心中的痛,而对于科班出身的同学,很多同学在工作之后,也意识到自身所学知识的不足与欠缺,想回头补补基础知识。关于计算机基础的课程很多,内容繁杂,但无论是相关书籍还是大学课程,都有点脱离工作。特别地,计算机基础知识体系庞杂,想要从零学习或者复习都耗时耗力。有鉴于此,本系列文章将带你更快的补足编程必备基础知识,涵盖计算机领域三大基...

    2024-04-01 00:59:24
  • 命令文件

    vim 设置 在 /etc/vimrc文件中任意行加入命令,可以修改vim打开后的状态,比如显示行号,加下划线等功能。 用户管理 /etc/passwd中显示 1.帐号名称 2.密码 3.uid,4....

    2024-04-01 00:59:17
  • Python调用C++ DLL库 ------OSError: [WinError 126] 找不到指定的模块。

    Python调用C++ DLL库 ------OSError: [WinError 126] 找不到指定的模块。

    Python调用C++ DLL库 解决Python中 OSError: [WinError 126] 找不到指定的模块 的问题。 一、问题:   在进行Python开发的过程中,很可能遇到调用C++ ...

    2024-04-01 00:59:09
  • ASP .net core之Memory usage

    ASP .net core之Memory usage

    Asp .net core内存管理机制注意:在垃圾回收触发时,除了触发垃圾回收的线程外所有的其他线程都会挂起状态分类:主要分为server GC和workstation GCServer GC:默认值...

    2024-04-01 00:59:03
  • mysql 表名 参数化_我可以在准备好的语句中参数化表名吗?

    我已经多次使用mysqli_stmt_bind_param函数。但是,如果我分开试图防止SQL注入的变量,则会遇到错误。这是一些代码示例:function insertRow( $db, $mysql...

    2024-04-01 00:58:38