首页 > 其他分享 >正则表达式

正则表达式

时间:2022-08-25 19:45:37浏览次数:100  
标签:字符 匹配 正则表达式 重复 字符串 限定符 任意

1.概述

  1. 概念:在编写处理字符串的程序或网页时,经常会有查找符合某些复杂规则的字符串的需要。正则表达式就是用于描述这些规则的工具。正则表达式就是用来进行文本匹配的工具

2.元字符

  1. .:匹配除换行符以外的任意字符
  2. \w:匹配字母或数字或下划线
  3. \s:匹配任意的空白符(包括空格,制表符(Tab),换行符,中文全角空格等)
  4. \d:匹配数字
  5. \b:匹配单词的开始或结束
  6. ^:匹配字符串的开始
  7. $:匹配字符串的结束.note:^和$都匹配一个位置,比如一个网站要求账号为5~12位数字,则可以这样写正则表达式:^\d{5,12}$

2.字符转义

如果你想查找元字符本身的话,比如说.和*,?等就可以使用转义字符。

  1. \\匹配\
  2. \.匹配.
  3. \*匹配*等等

3.限定符

限定符作用于前面的字符

  1. *:重复零次或更多次
  2. +:重复一次或更多次.例如\d+表示匹配1个或者更多个数字
  3. ?:重复零次或一次
  4. {n}:重复n次
  5. {n,}:重复n次或更多次最少n次
  6. {n,m}:重复n到m次
  7. {,m}:最多m次

4.字符类

  1. 由来:想匹配没有预定义元字符的字符集合(比如元音字母a,e,i,o,u),则可以使用字符类。(像字符,数字,空白符这些字符集合已经定义好了元字符)
  2. 语法:使用方括号列出想要匹配的字符集合
[0-9]:匹配一个数字,和\d效果一样
[a-z0-9A-Z_]:等同于\w
[aeiou]:匹配任何一个元音字母

5.分支条件

  1. 分支条件:指的是有几种规则,如果满足其中任意一种规则都应该当成匹配,具体方法是用|把不同的规则分隔开
举例:
0\d{2}-\d{8}|0\d{3}-\d{7}:表示匹配一种是三位区号,8位本地号(如010-12345678);一种是4位区号,7位本地号(0376-2233445)。

6.分组

  1. 由来:前面提到使用限定符如何重复单个字符,现在想重复多个字符就可以使用分组(用小括号指定子表达式)的方式,然后指定这个子表达式的重复次数。
  2. 例如:(\d{1,3}\.){3}\d{1,3}是一个简单的IP地址匹配表达式

7.反义

有时需要查找不属于某个能简单定义的字符类的字符。比如想查找除了数字以外,其它任意字符都行的情况,这时需要用到反义。

1.常用的反义代码
  1. \W:匹配任意不是字母,数字,下划线的字符
  2. \D:匹配任意非数字的字符
  3. \S:匹配任意不是空白符的字符
  4. \B:匹配不是单词开头或结束的位置
  5. [^x]:匹配除了x以外的任意字符
  6. [^aeiou]:匹配除了aeiou这几个字母以外的任意字符
    示例:
1. \S+匹配不包含空白符的字符串。
2. <a[^>]+>匹配用尖括号括起来的以a开头的字符串。

8.贪婪匹配与惰性匹配

1.贪婪匹配

当正则表达式中包含能接受重复的限定符时,通常的行为是(在使整个表达式能得到匹配的前提下)匹配尽可能多的字符。比如说:a.*b,会匹配整个字符串aabab,而不是aab

2.惰性匹配

惰性匹配就是匹配尽可能少的字符。前面给出的限定符都可以被转化为懒惰匹配模式,只要在它后面加上一个问号?。 这样.*?就意味着匹配任意数量的重复,但是在能使整个匹配成功的前提下使用最少的重复。比如说:a.*?b表示匹配最短的,以a开始,以b结束的字符串.则结果是aab,ab都符合。
常用的懒惰限定符如下:

  1. *? 重复任意次,但尽可能少重复
  2. +? 重复1次或更多次,但尽可能少重复
  3. ?? 重复0次或1次,但尽可能少重复
  4. {n,m}? 重复n到m次,但尽可能少重复
  5. {n,}? 重复n次以上,但尽可能少重复

标签:字符,匹配,正则表达式,重复,字符串,限定符,任意
From: https://www.cnblogs.com/xiaocer/p/16625488.html

相关文章

  • 使用正则表达式实现字符串的多位转义
     最近在项目中遇到一个问题,由于对象的名称属性中可能含有一些特殊字符,可能会造成后面处理的时候与分隔符冲突,因此解决思路是先转义避免冲突,最后处理完后再反转义回来。......
  • rm 配合正则表达式使用
    ls|grep-E"^[0-9]+"|xargsrm-r正则表达式含义为,从当前目录的所有文件名的起始字符进行匹配,要求数字至少出现一次。正则表达式:https://www.runoob.com/regexp/re......
  • 正则表达式
    转自:学无止境(http://www.cnblogs.com/xiashengwang/p/3988009.html)下面的内容来自于微软的官网。“正则表达式”描述在搜索文本正文时要匹配的一个或多个字符串。该......
  • API基础正则表达式8月23日
    API基础第二天:回顾:String:Strings=newString("hello");String常用方法:length():获取长度trim():去掉两边空白toUpperCase()和toLowerCase():转大写/转小写st......
  • 常用正则表达式
    常用正则表达式一、校验数字的表达式数字:^[0-9]*$n位的数字:^\d{n}$至少n位的数字:^\d{n,}$m-n位的数字:^\d{m,n}$零和非零开头的数字:^(0|[1-9][0-9]*)$非零开头的最多......
  • 正则表达式
    正则表达式语法普通字符对大小写字母、数字、标点符号的匹配。表达式说明[abc]匹配[]中的所有字符[^abc]匹配除了[]中的所有字符[a-c]匹配区间内的......
  • 正则表达式 $1 $2代表什么?
    $1,$2是表示的匹配的小括号里的内容$1是匹配的第一个小括号里的,$2是匹配的第2个小括号里的//将yyyy-mm-dd格式转换为年月日格式functionchDate1date(str){va......
  • 正则表达式
    正则表达式bashbash是一个命令处理,运行在文本窗口中,并能执行用户直接输入命令bash还能从文件中读取linux命令.称之为脚本bash只能通配符、管道、命令替换、条件判断等......
  • 常用正则表达式
    在做项目的过程中,使用正则表达式来匹配一段文本中的特定种类字符,是比较常用的一种方式,下面是对常用的正则匹配做了一个归纳整理。匹配中文:[\u4e00-\u9fa5]英文字母:[a-z......
  • js拆分选择题各选项【javascript将选择题选项通过正则表达式拆分出来】
    最近做题库项目需要添加试题,尤其是选择题逐个添加各选项很繁琐。通过以下正则表达式可以将选择题题目、选项迅速分离出来,并自动添加到选项文本框$("#split").clic......