正则表达式总结及一些有用的例子

背景

  正则表达式的用处十分广泛:字符串处理、输入验证等,特别是在爬取网页中对网页内容的清洗更需要正则。

正则表达式

  基本所有的语言都支持正则表达式,或者内置或者引入。正则的语法很多,但每种语言对正则支持的程度都不同(常用的语法规则基本都支持),这点需要格外注意。

      元字符

  正则表达式有12个特殊的标点,也称为元字符。它们包括:$ ( ) * . ? [ \ ^ { |。

    正则表达式中照字面匹配这些元字符,需要在它们的前面加入一个反斜杠来进行转义。

  注意:元字符不包括右方括号 ]、连字号 -、右花括号 }。前两个字符只有在没有转义的 [ 之后才是元字符,} 只有在没有转义的 { 之后才是元字符。不要碰到一个标点字符就进行转义,尽管不会影响正则表达式的正确性。

      一些栗子 

1.区分大小写:(?i)[A-F0-9] 可以匹配大小写A-F
2.单行和多行模式:(?s)单行模式,点号匹配换行符;(?m)多行模式
3.整个单词的边界:匹配 my cat is brown中的cat,不匹配category中的cat \bcat\b;反过来的话是 cat\B
4.由三个字符<(?:>开始的是一个非捕获分组,右括号<)>标记该分组的结束。非捕获分组不会破坏捕获分组的编号;另外,它性能较高;在非捕获分组中还可以使用模式修饰符
肯定型环视。My <b>cat</b> if furry.找到HTML粗体标记的文本,但不要标记:(?i)(?<=<b>)\w (?=</b>)。
肯定型逆序环视是唯一可以从右向左遍历目标文本的正则结构,其语法是(?<=text),text在不同的正则流派中不一样,但总是可以放入字面文本。 
肯定型顺序环视的语法是(?=regex),regex表示你可以放入任何正则内容。
否定型环视。把肯定型环视中的=换成!,就构成了否定型环视

 注意:逆序环视中的text在不同的正则流派中支持是不同的。Perl、Python、Ruby 1.9允许使用多选结构和字符类来把多个不同固定长度的字面字符串放入环视中。PCRE、Java允许在逆序环视中使用任意有限长度的正则表达式,即无限量词 * {n,} 不能使用。 .NET允许在环视中使用任何正则表达式。逆序环视用起来方便,但其速度很一般

 通过“宽松排列模式”向正则表达式中添加注释,Java通过Pattern.COMMENTS或在正则表达式前面增加(?x)打开。注释以 # 开头

查找XML格式的标签:
速成方案:<[^>]*>
在属性值中允许出现 > : <(?:[^>'"]|"[^"]*"|'[^']*')*>
(X)HTML标签(灵活方案):</?([A-Za-z][^\s>/]*)(?:[^>'"]|"[^"]*"|'[^']*')*>
(X)HTML标签(严格方案):(?i)<(?:([A-Z][-:A-Z0-9]*)(?:\s [A-Z][-:A-Z0-9]*(?:\s*=\s*(?:"[^"]*"|'[^']*'|[-.:\w] ))?)*\s*/?|/([A-Z][-:A-Z0-9]*)\s*)>

  


更多专业前端知识,请上 【猿2048】www.mk2048.com

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/361177.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

对PostgreSQL SPI例子的学习

[作者&#xff1a;技术者高健博客园 mail: luckyjackgaogmail.com ] http://www.postgresql.org/docs/9.1/static/spi-examples.html SPI 的例子里面没有说&#xff0c;是如何编译和部署的&#xff0c;我这里补充下&#xff1a; 编译与部署&#xff1a; [rootlocalhost soft]#…

Java飞行记录器(JFR)

JFR是Java分析器&#xff0c;它使您可以研究代码的运行时特征。 通常&#xff0c;您将使用探查器来确定代码的哪些部分导致大量内存分配或导致消耗过多的CPU。 有很多产品在那里。 过去&#xff0c;我使用过YourKit&#xff0c;OptimizeIt&#xff0c;JProfiler&#xff0c;Ne…

图像识别SLIC、Haralick texture features(自备)

SLIC 简单线性迭代聚类(SLIC ),它采用k-means聚类方法来有效地生成超像素。 SLIC超像素分割详解&#xff08;一&#xff09;&#xff08;二&#xff09;&#xff08;三&#xff09;_超像素分割 样本-CSDN博客 超像素分割 & SLIC算法 & 使用示例_slic分割算法matlab-C…

DOM

1 标签操作 直接查找 documeny.getElementById() 间接查找 文件内容&#xff1a; 1.innterText只有文本 2.innerHTML所有内容 3.value input便签 value 获取当前标签中的值 select标签 value 获取当前选中的value selectedIndex 设定当前选中的value textarea标签…

在Java中给出的时间

tl; dr&#xff0c;您可以使用标签来阐明给定的测试时间样式。 什么时候给出&#xff1f; 给定的时间&#xff0c;然后是一种指定系统行为的常用样式&#xff0c;其中您的测试分为三个部分。 给定的部分列出了测试的前提条件&#xff0c;即在开始之前假设世界所处的任何状态。…

Vue.js环境搭建

简述小弟刚刚开始写博客&#xff0c;学习VueJs也不久&#xff0c;开这个博客&#xff0c;只是为了多多学习和记录自己的 学习之旅&#xff0c;可能很多地方都很浅薄&#xff0c;还望各位海涵和多多拍砖。 学习Vue也有两个多月了&#xff0c;接触它是在一个很偶然的机会。当初是…

【Python】Python中对目录路径的要求

Python中使用的目录路径一定不能以"\"结尾&#xff0c;否则会报未知符号错误 另外Python中的编码不支持VisBuild的output窗口&#xff0c;在python开头处定义了UTF-8输出&#xff0c;然后在下面调用了某个字符串的decode(UTF8)&#xff0c;始终会在VisBuild的output里…

我如何想成为Java

我喜欢Java。 我喜欢用Java编程。 但是在使用Python一段时间后&#xff0c;我希望对其进行一些更改。 它几乎纯粹是语法上的&#xff0c;因此可能有更好的JVM语言&#xff0c;但是我并不真正感兴趣&#xff0c;因为我仍然需要使用普通的Java来工作。 我意识到这些更改将不会实施…

9.1定时器 小时分秒

功能&#xff1a;用切换图片0-9效果显示当前系统时间 属性&#xff1a;img的src 1.用到 new Date() getHours(),getMinutes(),getSeconds() getFullyear(),getMouth() 1月数需要加1,getDay()星期为0&#xff0c;1&#xff0c;2&#xff0c;3&#xff0c;4&#xff0c;5&am…

浏览器中的JavaFX

浏览器中的JavaFX屏幕截图 最近&#xff0c;Carl Dea和我启动了一个新项目&#xff0c;将JavaFX 8引入浏览器。 今天&#xff0c;我想介绍我们创建的前两个概念验证&#xff0c;以查看该想法是否完全可行。 对于不耐烦的人&#xff0c;这里是到PoC的链接。 但请注意&#xff0…

如何用代码对repeating section控件新增Item(InfoPath)

在做项目的时候&#xff0c;有一个场景&#xff0c;当用户切换不同选项时(radio button)&#xff0c;repeating section会随着切换而变换两种状态1&#xff1a;删除所有item. 2.新增而且只新增一个item. 对于删除比较容易&#xff0c;但对于从没有任何一个item状态下&#xff0…

MDB!= JMS,反之亦然

基本 消息驱动Bean&#xff08;又称为MDB&#xff09;只是另一个EJB&#xff0c;如无状态&#xff0c;有状态或单例。 使用MessageDriven批注指定。 MDB用于异步消息处理 它们与无状态EJB 相似 &#xff0c;因为它们都是由EJB容器池化的 但是&#xff0c;它们与无状态EJB不同…

4.1邮箱的全选,全不选,反选

事件&#xff1a;onclick 属性&#xff1a;checked 对于分清getElementsByTagName(元素名)里的元素名&#xff0c; 可以先提取其外面一层的元素&#xff0c;再在此基础上用getElementsByTagName(元素名) 用到for语句&#xff0c;if语句&#xff0c;length <!DOCTYPE ht…

调了 好几天的问题 treeview 的js 处理复选框之间的关系,选中子框父框自动选中,单独执行 没问题 放到框架页里 就有问题...

刚开始的js 这么写的 function OnTreeNodeChecked() {var ele event.srcElement;if (ele.type checkbox) {var childrenDivID ele.id.replace(CheckBox, Nodes);var div document.getElementById(childrenDivID);if (div ! null) {var checkBoxs div.getElementsByTagName…

1.2鼠标移入移出改变背景色和其他大小样式

功能&#xff1a;鼠标移入div,背景色变为绿色&#xff0c;宽变小&#xff0c;长变大&#xff0c;移出恢复原状 事件&#xff1a;onmouseover,onmouseout 属性&#xff1a; background,width,height <!DOCTYPE html><html><head><meta charset"utf…

JDK 9 –给圣诞老人的信?

众所周知&#xff0c;冬天&#xff08;尤其是圣诞节前的时间&#xff09;是做梦的合适时机&#xff0c;希望有一个梦想似乎可以触摸的时刻。 当孩子们和大人在纸上或在对圣诞老人的虚构或真实信件中写下自己的梦想的那一刻&#xff0c;希望他们的梦想将成为现实。 这很引人注目…

周三的工作 张孝祖

今天的任务是主面板master嘿嘿 上头有几个按钮&#xff0c;登录登出&#xff0c;个人信息&#xff0c;注册注销等&#xff0c;他们是根据用户是否等率决定的 具体代码如下 using System; using System.Collections.Generic; using System.Linq; using System.Web; using System…

H5本地存储

在以前&#xff0c;我们想要存储一些数据&#xff0c;并且只是在前端使用&#xff0c;服务端并不会使用&#xff0c;我们只能存在cookie里&#xff0c;但是cookie会跟随请求头在客户端和服务端之间来回传递&#xff0c;而且cookie还有一些缺点&#xff0c;H5提供了webStorage的…

在哪里可以运行EJB?

EJB不仅为Java EE应用服务器而建。 他们还可以执行在的Java EE Web Profile的容器或简单的Java SE环境&#xff08;Java SE的啊- &#xff01;E&#xff01;ASY 的J ava 乙是指合同&#xff09;。 EJB Lite 仅支持完整的EJB规范提供的功能的子集所必需的-相同功能的轻量级版本…

sql查询结果字段名与字段值倒过来了

数据库为sybase, sql如下&#xff1a; 1 select substring(LRRJG,1,7) as SSQJ, 2 sum(case when RWDL_BH 01 then 1 else 0 end) AS A, 3 sum(case when RWDL_BH 01 and XBHSJG ! null then 1 else 0 end) AS B 4 from ZYH_DBRW_LRNSRRW 5 where LR_DBRW_ID ! null and DR …