正则

Java 正则?:?=?!的理解

这一生的挚爱 提交于 2019-12-30 20:00:24
  上图是官方文档的介绍,总结一下讲了两个知识点 ①是否获取匹配并保存匹配的值、②正向预查和反向预查。 1:解释是否获取匹配并保存匹配的值 ()表示捕获分组,获取匹配,() 把每个分组里的匹配的值保存起来 (?:)表示非捕获分组,获取匹配,非捕获分组匹配的值不会保存起来,可以提高程序执行速度 (?=?!?<=?<!)表示非捕获分组,不获取匹配,也不保存匹配的值 举例说明: // 是否获取匹配 测试文本 abxoxcd ..(xox).. 匹配 abxoxcd ..(?:xox).. 匹配 abxoxcd ..(?=xox).. 匹配 abxo获取匹配,一般匹配到了字符之后,该字符就被消耗、输出。不获取匹配,不会消耗字符。 // 是否保存匹配的值 测试文本 AAABBCaaA E666FF (A)\\1* 匹配 AAA、A (\\w)\\1+ 匹配 AAA、BB、aa、666、FF (?:A)(B)\\1* 匹配 ABB因为非捕获分组不保存匹配的值,所以 (?:A)(B)\\1* 匹配 ABB 第一个\\1表示(B)这个捕获组捕获到的值。 “注意:反向引用表示捕获到的值,而不是再次使用正则表达式”这里用到了一个新的知识点,反向引用。 1、正则表达式中 “\number” 表示反向引用,表示引用一个捕获组,需要和小括号 “()” 一起使用 2、正则捕获组的下标从 0 开始,下标为 0

Linux 三剑客 -- awk sed grep

吃可爱长大的小学妹 提交于 2019-12-30 18:51:30
本文由本人收集整理自互联网供自己与网友参考,参考文章均已列出,如有侵权,请告知! 顶配awk,中配sed,标配grep awk 参考 sed 参考 grep 参考 在线查看linux命令速记表 appropos , history two long didn't read 整理 我们都知道,在Linux中一切皆文件,比如配置文件,日志文件,启动文件等等。如果我们相对这些文件进行一些编辑查询等操作时,我们可能会想到一些vi,vim,cat,more等命令。但是这些命令效率不高,这就好比一块空地准备搭建房子,请了10个师傅拿着铁锹挖地基,花了一个月的时间才挖完,而另外一块空地则请了个挖土机,三下五除二就搞定了,这就是效率。而在linux中的“挖土机”有三种型号:顶配awk,中配sed,标配grep。使用这些工具,我们能够在达到同样效果的前提下节省大量的重复性工作,提高效率。 接下来我们就看一下sed的详细说明 sed 是Stream Editor(字符流编辑器)的缩写,简称流编辑器。什么是流?大家可以想象以下流水线,sed就像一个车间一样,文件中的每行字符都是原料,运到sed车间,然后经过一系列的加工处理,最后从流水线下来就变成货物了。 [root@master ~]# dirname /etc/rc.d/init.d/functions /etc/rc.d/init.d [root

正则与sed,grep,awk三剑客

十年热恋 提交于 2019-12-30 18:47:32
系统登录顺序: /etc/profile /etc/profile.d/a.sh (a.sh 自己建的 ) /root/.bash_profile /root/.bashrc /etc/bashrc /bin/bash 提供命令解释器(终端) 直接打 /bin/bash 非登录 shell /root/.bashrc /etc/bashrc /etc/profile.d/a 可将别名 alias 等写入以上三个文件 正则表达式: grep -n 只显示行号 -o 只显示匹配内容 -q 安静模式,不打印 echo $? 为 0 显示输出正确 -l 过滤成功显示文件名,不成功无 -A 2 'root' /etc/passwd 过滤 root 所在后两行 ( 显示错误相关信息 ) -B 5 'root' /etc/passwd 过滤 root 所在前 5 行 -C 如果匹配成功,则将匹配行及前后 n 行都打印出来 -color -c 如果匹配成功,显示行数 -E egrep -i 忽略大小写 -v 取反 -w 过滤单词,(不连贯) -r 递归 ^ 以开头的 ^b.n * b* 前面字符 左面的一个字符 0 或无穷个 ab* egrep + 一个或无穷个 ab{3} 匹配 b 三次 egrep -w 'ab{3}' a.txt 匹配单词 egrep -w 'ab{3}$' a.txt

php正则的使用

柔情痞子 提交于 2019-12-30 09:09:48
<?php /* 正则 正则的作用:查找、匹配、分割、替换 分隔符: // $$ %% 任意非字母数字、非反斜线、非空白字符 原子: \d 0~9数字 \w 数字、字母、下划线 \s 空白符:空格、tab制表符、换行符 \D \W \S 元字符: . 通配符,可以匹配除了换行之外的所有字符 * 修饰前面的原子为0个或多个 ? 0次或1次 + 1次或多次 ^ $ ... 模式修正符 i 不区分大小写 U 取消贪婪模式 ... 反向引用 用()括起来的东西可以反向引用 贪婪模式 用模式修正符U取消或者用?取消 写手机号、邮箱、url地址的正则 '/^189\d{8}$/' '/123@qq.com/' '/^[\w-]+@\w+\.(cn|com|net)$/' 请写出一个正则表达式取出所有a标签中href的值 <a title="" href="xx"></a> '/<a.*?href="(.*?)".*?>/' */ preg_match('/\w+?\d+\s+/', '-----abc_____', $m); preg_match_all('/[^a-z]+/', '-----abc_____', $m); var_dump($m); //用正则剥除字符串的b标签:能用字符串函数的就不要用正则 $str = '<b>黄忠</b><b>打刘克山</b>'; echo $str,'

PHP中的正则

﹥>﹥吖頭↗ 提交于 2019-12-30 09:09:10
概述 正则表达式是一种描述字符串结果的语法规则,是一个特定的格式化模式,可以匹配、替换、截取匹配的字符串。 j简单的说就是 通过一些规定的符号和字符组合成的一种语法规则 其实,只有了解一种语言的正则使用,其他语言的正则使用起来,就相对简单些。文本主要围绕解决下面问题展开。 有哪些常用的转义字符 什么是限定符与定位符 什么是单词定位符 特殊字符有哪些 什么是逆向引用以及怎样使用逆向引用 匹配模式 php中怎样使用正则表达式 php中哪些方面需要用到正则 怎样进行邮箱匹配,url匹配,手机匹配 怎样使用正则替换字符串中某些字符 贪婪匹配与惰性匹配区别 正则表达式之回溯与固态分组 正则优缺点有哪些 正则表达式的基本知识汇总 行定位符(^与$) 行定位符是用来描述字符串的边界。 “$” 表示行结尾 “^” 表示行开始如 "^de" ,表示以de开头的字符串 "de$" ,表示以de结尾的字符串。 单词定界符 我们在查找的一个单词的时候,如an是否在一个字符串”gril and body”中存在,很明显如果匹配的话,an肯定是可以匹配字符串“gril and body”匹配到,怎样才能让其匹配单词,而不是单词的一部分呢?这时候,我们可以是哟个单词定界符\b。 \ban\b 去匹配”gril and body”的话,就会提示匹配不到。 当然还有一个大写的\B,它的意思,和\b正好相反

ultraedit正则使用

这一生的挚爱 提交于 2019-12-30 08:57:09
下面是从UltraEdit 文档中摘录的语法说明 : 正则表达式 (UltraEdit 语法): 符号 功能 % 匹配行首 – 表示搜索字符串必须在行首,但不包括任何选定的结果字符中的行终止字符。 $ 匹配行尾 – 表示搜索字符串必须在行尾,但不包括任何选定的结果字符中的行终止字符。 ? 匹配任何除换行符的字符。 * 匹配任何除换行符外所出现的任意数量的字符。 + 匹配一个或多个前面的字符/表达式。必须找到至少一个出现的字符。不匹配重复的换行符。 ++ 0 次或多次匹配前面的字符/表达式。不匹配重复的换行符。 ^b 匹配一个分页符。 ^p 匹配一个换行符 (CR/LF) (段落) (DOS 文件) ^r 匹配一个换行符 (仅 CR) (段落) (MAC 文件) ^n 匹配一个换行符 (仅 LF) (段落) (UNIX 文件) ^t 匹配一个制表符 [ ] 匹配任何括号中的单个字符或范围 ^{A^}^{B^} 匹配表达式 A 或 B ^ 忽略其后的正则表达式字符 ^(*^) 在表达式加上括号或标签在替换命令中使用。正则表达式中可以有 9 个表达式标签,数字根据它们在正则表达式中的次序确定数字。 相应的替换表达式是 ^x,x 的范围是 1-9。例如: 如果 ^(h*o^) ^(f*s^) 匹配“hello folks”,那么^2 ^1 表示将用“folks hello”替换它。 注意

jQuery正则的使用

依然范特西╮ 提交于 2019-12-30 08:56:53
转自:http://www.maiziedu.com/wiki/jquery/regular/ 基础正则 1、正则表达式的创建 a) var checkNum = /^[A-Za-z0-9]+$/; b) var re=new RegExp(“["+s1+"]“,”g”); 2、常用规则 a) 用户密码:/^[a-zA-Z][a-zA-Z0-9_]{5,20}$/ b) 邮件:/^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$/ c) 手机:/^[\d]{5,20}$/ d) 其它常用验证:请百度 3、方式:test 案例 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>jquery ajax</title> <script type="text/javascript" src="public/js/jquery-2.2.3.min.js"></script> </head> <body> <form action=""> <label>用户名:</label><span id="check_username">检测</span> <input type="text" id="t_username" placeholder="请输入"/> <hr/> <label>邮箱:</label

rewrite规则写法及nginx配置location总结

牧云@^-^@ 提交于 2019-12-30 01:42:40
rewrite只能放在 server{} , location{} , if{} 中,并且只能对域名后边的除去传递的参数外的字符串起作用 。 例如 http://seanlook.com/a/we/index.php?id=1&u=str 只对 /a/we/index.php 重写。 语法: rewrite regex replacement [flag]; 如果相对域名或参数字符串起作用,可以使用全局变量匹配,也可以使用 proxy_pass 反向代理。 1、location正则写法 一个示例: location = / { # 精确匹配 / ,主机名后面不能带任何字符串 [ configuration A ] } location / { # 因为所有的地址都以 / 开头,所以这条规则将匹配到所有请求 # 但是正则和最长字符串会优先匹配 [ configuration B ] } location /documents/ { # 匹配任何以 /documents/ 开头的地址,匹配符合以后,还要继续往下搜索 # 只有后面的正则表达式没有匹配到时,这一条才会采用这一条 [ configuration C ] } location ~ /documents/Abc { # 匹配任何以 /documents/ 开头的地址,匹配符合以后,还要继续往下搜索 #

Python 正则表式

大兔子大兔子 提交于 2019-12-29 21:33:20
1.1 查找文本中的模式 1 import re 2 pattern = 'this' 3 text = 'Does this text match the pattern?' 4 match = re.search(pattern,text) 5 6 s = match.start() 7 e = match.end() 8 9 print(match.re.pattern,match.string,s,e,text[s:e]) 1.2 编译表达式 1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 import re 4 5 regexes = [re.compile(p) for p in ['this','that']] 6 text = 'Does this text match the pattern?' 7 print("Text: %r\n",text) 8 9 for regex in regexes: 10 print('Seeking "%s" ->' % regex.pattern) 11 if regex.search(text): 12 print('Match') 13 else: 14 print("No match!") 1.3 多重匹配 1 import re 2 text =

pcre和正则表达式的误点

蹲街弑〆低调 提交于 2019-12-29 07:30:11
本文只是关于正则一些容易出错的地方,关于正则的学习,可参考如下两篇文章: 基础正则: https://www.cnblogs.com/f-ck-need-u/p/9621130.html Perl正则: https://www.cnblogs.com/f-ck-need-u/p/9648439.html 1.正则中所有的匹配模式,都应该理解为"匹配了某字符或字符串后,紧跟着再匹配"。这个概念很重要。 2.中括号首部使用脱字符时,表示的是紧跟着匹配不含给定字符的字符,而不是允许不匹配给定的字符。 它们大多数时候是等价的,但在匹配行尾时,意义不同,例如:Aa[^bcd]$ 所匹配的行允许是Aaa$或Aax$,但不允许仅是Aa$。 这就是正则中"紧跟着匹配"的意思。 3.(\.[0-9]+)? 可匹配小数点部分,不能写成 (\.?[0-9]*) ,后者即使不能匹配小数点,也能匹配原本处于小数点后的数值 4.星号*匹配问题0或多个字符,如果写成"a*",将可以匹配任何单个字符,只不过对于非a字符,匹配到的结果为空。 例如字符串"111aaaAAA",正则"1a*"其实从读取第2个字符进行匹配的时候就已经匹配完成了,匹配的结果不是"1aaa",而是"1"加上1前面的一个空,因为是从行首这个锚定位开始匹配的。使用sed或perl进行替换操作就很容易理解。 $ echo '111aaaAAA'