16、JavaScript-正则表达式美高梅4858官方网站

作者:编程技术

    W  匹配非数字字母下划线

每天一句:梦想不是挂在嘴边炫人眼目的气氛,而是需求认真的实施,等到没错风,大家展翅飞翔;未有风,只要拥有丰富健康的双翅,大家依然拔地飞行,天空晤面。

 2.常用艺术实例

#(1)findall
import re
ret = re.findall('d','adsf123456we7we')    #匹配字符串中是数字的字符,并将匹配值返回到列表中
print(ret)
'''结果:
['1', '2', '3', '4', '5', '6', '7']
'''

#(2)search
ret = re.search('d','adsf123456we7we').group()     #按照表达式匹配到第一个值就返回
print(ret)
'''结果:
1
'''

#(3)match
ret = re.match('w','adsf123456we7we').group()  #按照表达式匹配开头第一个值,符合的话就返回,不符合就报错
print(ret)
'''结果:
a
'''

#(4)sub
ret = re.sub('d','*','adsf123456we7we',0)      #匹配字符串中的数字,并且替换成*号,0表示替换所有
print(ret)
'''结果:
adsf******we*we
'''

#(5)subn
ret = re.subn('d','*','adsf123456we7we',0)     #匹配字符串中的数字,并且替换成*号,返回一个元组,存放这替换结果和替换次数
print(ret)
'''结果:
('adsf******we*we', 7)
'''

#(6)compile
obj = re.compile('d')  #将正则表达式编译成一个正则表达式对象
ret = obj.search('ads123asd456').group()
print(ret)
'''结果:
1
'''

#(7)finditer
ret = re.finditer('d','adsf451we15615adf16')   #finditer返回一个存放匹配结果的迭代器
print(ret)
for i in ret:
    print(i.group())

 

    s  标志相配大肆二个空白字符(回车 / n,空格,制表符 / tab)

四、字符类

【在方括号中的,都以单个字符的,不管是里面是什么】

  • 大肆字符 [abc]
    例如: o[abc] —> oa/ob/oc

  • 范围 [a-z]、[0-9]
    例如: 班级[0-9] —> 班级1/班级2..班级9

  • 排除 [^a] (除了a以外的都能够卡塔尔(قطر‎
    例如: ab[^0-9] — abd/ab?/ab …

  • 组合 [a-z0-9A-Z] (字母和数字卡塔尔(英语:State of Qatar)

  • 转义字符
    1、 .(点卡塔尔 —> 表示大肆字符
    ' . ' 点表示全体字符
    ' . ' 表示许多个随机字符
    2、d —> 表示[0-9],即数字
    3、D —> 表示[^0-9],即除去数字
    4、w —> 表示[a-zA-Z0-9_],即数字字母下划线
    5、W —> 表示[^a-zA-Z0-9_],即除去数字字母下划线
    6、s —> 表示空白空格制表符
    7、S —> 除了空格以外的
    【如若就是要求输入点这么些字符,请进行转义 “.” 】

案例: 将小说转换过来

 rel = /<[^<>] >/g;     str.replace(rel, ‘’);

二、RE模块

 3. 正则表达式语法

少年老成、正则表明式基本功1

  • 复习字符串操作
    search 查找
    substring 获取子字符串
    charAt 获得有个别字符
    split 分割字符串,获取数组

  • 寻觅字符串中装有数字
    1、用古板字符串操作实现
    美高梅4858官方网站,2、用正则表明式完结

3.表明式的接收差异

(1).^${}的区别

正则 待匹配字符 匹配
结果
说明
李.? 李杰和李莲英和李二棍子

李杰
李莲
李二

 
?表示重复零次或一次,即只匹配"李"后面一个任意字符
 
李.* 李杰和李莲英和李二棍子 李杰和李莲英和李二棍子
*表示重复零次或多次,即匹配"李"后面0或多个任意字符
李. 李杰和李莲英和李二棍子 李杰和李莲英和李二棍子
 表示重复一次或多次,即只匹配"李"后面1个或多个任意字符
李.{1,2} 李杰和李莲英和李二棍子

李杰和
李莲英
李二棍

{1,2}匹配1到2次任意字符

注意:前面的*, ,?等都以贪心相配,也正是尽量相称,在叁个量词前面加?号使其成为惰性相称

正则 待匹配字符 匹配
结果
说明
李.*? 李杰和李莲英和李二棍子

惰性匹配

(2)字符集[ ] [ ^ ]

正则 待匹配字符 匹配
结果
说明
李[杰莲英二棍子]* 李杰和李莲英和李二棍子

李杰
李莲英
李二棍子

 
表示匹配"李"字后面[杰莲英二棍子]的字符任意次
 
李[^和]* 李杰和李莲英和李二棍子

李杰
李莲英
李二棍子

表示匹配一个不是"和"的字符任意次
[d] 456bdha3

4
5
6
3

表示匹配任意一个数字,匹配到4个结果
[d] 456bdha3

456
3

表示匹配任意个数字,匹配到2个结果

(3)转移符

  在正则表明式中,有为数不罕有特有含义的是元字符,比方d和s等,借使要在正则中十分经常的"d"并非"数字"就供给对""实行转义,产生'\'。

  在python中,无论是正则表明式,还是待相配的内容,都以以字符串的样式现身的,在字符串中也是有十分的意思,本身还索要转义。所以要是合作一次"d",字符串中要写成'\d',那么正则里将要写成"\\d",这样就太费事了。当时大家就用到了r'd'这几个定义,那时的正则是r'\d'就能够了。

正则 待匹配字符 匹配
结果
说明
d d  False
因为在正则表达式中是有特殊意义的字符,所以要匹配d本身,用表达式d无法匹配
\d d  True
转义之后变成\,即可匹配
"\\d" '\d'  True
如果在python中,字符串中的''也需要转义,所以每一个字符串''又需要转义一次
r'\d' r'd'  True
在字符串之前加r,让整个字符串不转义

 

(4)贪婪相配

  贪婪相称:在满足相配时,相配尽可能长的字符串,默许境况下,选取贪婪相配。

正则 待匹配字符 匹配
结果
说明
<.*>

<script>...<script>

<script>...<script>
默认为贪婪匹配模式,会匹配尽量长的字符串
<.*?> r'd'  

<script>
<script>

加上?为将贪婪匹配模式转为非贪婪匹配模式,会匹配尽量短的字符串
几个常用的非贪婪匹配模式

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

.*?的用法

. 是任意字符
* 是取 0 至 无限长度
? 是非贪婪模式。
何在一起就是 取尽量少的任意字符,一般不会这么单独写,他大多用在:
.*?x

就是取前面任意长度的字符,直到一个x出现

    意气风发种相称字符串的平整

二、正则表明式根底2

  • 什么样是正则表明式
    1、什么叫"正则" --> 规则、模式
    2、强盛的字符串相配工具
    3、是生机勃勃种平常人很难读懂的文字

  • 正则表达式(RegExp卡塔尔
    1、js风格 —> new RegExp("a", "b")
    2、perl风格 —> /a/i

  // 参数1: 检测字符串是否包含'a'
  // 参数2: 'i'表示忽略大小写
  var re = new RegExp('a');
  var re = new RegExp('a','i');

  // 简写
  var re = /a/;
  var re = /a/i;

1.正则表明式概述

  正则表明式,又称法规表明式。(意国语:Regular Expression,在代码中常简写为regex、regexp或RE),Computer科学的三个概念。正则表明式经常被用来寻觅、替换那多少个相符有个别形式(准则卡塔尔(قطر‎的公文。正则表明式(Regular Expression卡塔尔是风流倜傥种文本情势,富含平时字符(譬喻,a 到 z 之间的假名)和特殊字符(称为"元字符")。正则表明式使用单个字符串来陈说、匹配风流倜傥多种相配有些句法法则的字符串。正则表明式是烦琐的,但它是不战而屈人之兵的,学会之后的应用会让您除了提升功用外,会给你带给绝对的成就感。

    D  相称非数字

五、量词

  • 怎么着是量词
    1、现身的次数
    2、{n,m}最少现身n次,最多m次
    例如: 查找QQ号

  • 常用量词
    1、{n,} 至少n次
    2、* 大伍遍(能够现身也足以不现身,不建议采用 {0,}
    3、? 零次或一次 {0,1}
    4、 一次或私行次 {1,}
    5、{n} 正好n次

1.re函数艺术总括

方法名称   格式             说明
findall re.findall(表达式,字符串)
返回所有满足匹配条件的结果,放在列表里
search re.search(表达式,字符串).groups()
函数会在字符串内查找模式匹配,只到找到第一个匹配然后返回一个包含匹配信息的对象,该对象可以
通过调用group()方法得到匹配的字符串,如果字符串没有匹配,则返回None。
match      re.match(表达式,字符串).groups()    同search,不过尽在字符串开始处进行匹配
split    re.split(表达式,字符串)    按表达式对字符串分割,返回列表
sub re.sub(表达式,替换字符,字符串,count)
按表达式类型替换成新的字符,返回字符串
subn re.subn(表达式,替换字符,字符串,count)
按表达式类型替换成新的字符串,返回一个元组,存放这替换结果和替换次数
compile re.compile(表达式)
将正则表达式编译成为一个 正则表达式对象
finditer re.finditer(表达式,字符串)
finditer返回一个存放匹配结果的迭代器

  量词 ?    *  {}

六、高端表单校验

  • 校验邮箱
    1、行首行尾 (^行首,$行尾,常常的校验都急需丰裕那,幸免独有部分切合准则)
/^w @[0-9a-z] .[a-z]{2,4}$/

2、去掉空格

 ^s*|s*$
  • 相当中文: [u4e00-u9fa5]

2.表达式列表

 

表达式

说明

字符相配

[0-9]

相配0-9里头的大肆1个数字。

[a-z]

代表有些范围内的字符。与钦点区间内的别的字符相配。譬如,"[a-z]"相配"a"与"z"之间的其余1个小写字母。

[A-Z]

表示某些范围内的字符。与内定区间内的其余字符相配。例如,"[A-Z]"相称"A"与"Z"之间的其他1个大写字母。

元字符匹配

.

相称换行符以外的别的字符。

w

与此外单词字符相配,满含下划线。等价于"[A-Za-z0-9_]"。

s

与别的白字符相配,包蕴空格、制表符、分页符等。等价于"[fnrtv]"。

d

与一个数字字符相称。等价于[0-9]。

n

与换行符字符匹配。

t

与制表符相配。

b

与单词的界线相配,即单词与空格之间的岗位。比如,"erb"与"never"中的"er"相配,不过不合营"verb"中的"er"。

^

相称输入的初叶地方。

$

十分输入的尾声。

W

与任何非单词字符相配。等价于"[^A-Za-z0-9_]"。

D

与非数字的字符相配。等价于[^0-9]。

S

与别的非空白的字符相配。等价于"[^fnrtv]"。

x|y

匹配x或y。例如"z|food"可匹配"z"或"food"。"(z|f)ood"匹配"zood"或"food"。

()

群组,与方式相称并切记相配。相称的子字符串能够从作为结果的Matches集结中动用Item[0]... [n]收获。借使要匹配括号字符(和卡塔尔国,可利用"("或")"。

[xyz]

叁个字符集。与括号中字符的中间之意气风发相配。譬喻,"[abc]"匹配"plain"中的"a"。

[^xyz]

八个否认的字符集。相配不在这里括号中的任何字符。举例,"[^abc]"能够协作"plain"中的"pl".

量词

*

相称前三个字符零次或一遍。比方,"zo*"能够匹配"z"、"zoo"。

匹配前三个字符二遍或频仍。举个例子,"zo "能够宽容"zoo",但不合营"z"。

?

相配前三个字符零次或一遍。比方,"a?ve?"可以合作"never"中的"ve"。

{n}

n为非负的卡尺头。相配正巧n次。比如,"o{2}"不能够与"Bob中的"o"相称,然则足以与"foooood"中的前四个o相配。

{n,}

n为非负的整数。相称最少n次。比方,"o{2,}"不包容"Bob"中的"o",但是相称"foooood"中保有的o。"o{1,}"等价于"o "。"o{0,}"等价于"o*"。

{n,m}

m和n为非负的整数。相配最少n次,至多m次。比方,"o{1,3}"相配"fooooood"中前八个o。"o{0,1}"等价于"o?"。

   元字符和量词结合 , 表示在同等职位能够陪配多少个

三、字符串与正则合营

  • search(找出卡塔尔(英语:State of Qatar) 字符串找寻
    1、重临现身的职位(不设有重返-1卡塔尔国
    2、忽视大小写: i (ignore卡塔尔(英语:State of Qatar)
    3、判别浏览器类型

  • match(相称卡塔尔国 获取相配的品类
    1、量词: (表多个)
    2、量词变化: d、dd、d
    3、全局相称: g (global卡塔尔国
    (举个例子: 搜索所有数字卡塔尔

  • replace(替换卡塔尔国 替换全部相配
    1、再次回到替换后的字符串
    (比如: 敏感词过滤卡塔尔

风姿洒脱、正则表明式

  特殊的用法和风貌

    n  代表非凡回车

 

美高梅4858官方网站 1                                 美高梅4858官方网站 2

    S  相配非空白字符

     [a-z] 表示那一个人上只可以相配a到z之间的四个小写字母(Python依据ascii码的逐一确

    |    表示能够匹配 | 左右的字符都得以( ' 或 ' 的情趣卡塔尔(英语:State of Qatar)

 1. 哪些是正则表明式:

     [^abc] 非字符组 在这种情状,^ 也正是'非', 与[ ]所对应的职责不许有[ ]内的源委

    拟定多个平整,来规定叁个字符串是或不是符合准绳只怕从大段的字符串中,找到适合法则的

    t  表示相配制表符

      定A-Z的程序范围卡塔尔

    $ 相配字符串的末尾

  

    w  表示非常八个数字字母下划线

     [0-9a-zA-Z]  标志相称多个字符,满意每风流罗曼蒂克限量的条件.然则并未有各类节制

    [dD] [sS] [wW]  代表杰出全部

   {n}  表示 n 次  {n,}   n 次以上  {n,m}   n 到 m 次

    相称(尽恐怕少的协作卡塔尔(英语:State of Qatar)

    内容

      [0-9] 表示那少年老成岗位上只相配0到9之内的一个数字

   ? 的使用

 回溯算法  (用回溯算法实现贪婪相称卡塔尔(قطر‎

      ab|abc   唯有ab能够,(从左往右查找,找到就止住,所以只找'ab',不再往下找卡塔尔(英语:State of Qatar)

     [0-9][A-Z][a-z]意味着格外四个字符,且根据顺序满意每一职分上的尺度

    d  代表拾贰分三个字符,相配的是二个数字

    b  相配一个单词的分界   ob  代表只相配以o结尾的疆界  bo 代表特别以o起头的边际

    字符组 [ ]  在一个字符的位置上能冒出的内容

    ^  相称字符串的起来

    在量词后边加个 ? (??   ?   *?卡塔尔国撤消贪婪相称(尽恐怕多的相配卡塔尔(قطر‎产生惰性

     [A-Z] 表示那壹人上必须要相称A到Z之间的二个大写字母(Python根据ascii码的各种确

    ()  分组 

       abc|ab   'abc'和'ab'都可以 ; 

  

      定a-z的次第范围卡塔尔

    .  相配除换行符以外的人身自由字符

    

   ?   代表 0 次或1 次   表示 1 次或频仍  * 表示 0 次或频仍

   元字符:

 

    登陆注册表单验证 ; 爬虫 ; 自动化开拓 ; 日志开垦

美高梅4858官方网站 3

 2. 正则表达式能作吗莫

 

本文由分分快三计划发布,转载请注明来源

关键词: JavaScript python 02-JavaScrip