正则

Php中正则小结(一)

时光毁灭记忆、已成空白 提交于 2019-12-29 07:29:50
一.概念 语法模式类似 perl . 表达式必须用分隔符闭合,比如一个正斜杠 (/). 分隔符可以是 任意非字母非数字,除反斜杠 (\) 和空字节之外的非空白 ascii 字符 如果分隔符 在表达式中使用,需要使用反斜线进行转义 。 二.组成 元字符 一个正则表达式基本组成 /原子和元字符/模式修正符 /代表定界符的一个 正则表达式的威力在于其能够在模式中包含选择和循环。它们通过使用元字符来编码在模式中,元字符不代表其自身,它们用一些特殊的方式来解析。 根据在方括号的内部还是外部分为两种。 1.方括号之外的元字符 元字符(符号) 说明 \ 一般用于转义字符 ^ 断言目标的开始位置(或在多行模式下是行首) $ 目标的结束位置(活在多行模式下行尾) . 匹配除换行符外任何字符(默认时) [,] 开始,结束字符类定义 | 开始一个可选分支 ( ,) 子组的开始,结尾标记 ? 作为量词,表示 0 次或 1 次匹配。位于量词后面用于改变量词的贪婪特性 * 量词,0 次或多次匹配 + 量词,1 次或多次匹配 { ,} 自定义量词开始标记,结束标记 2.模式中方括号内的部分称为“字符类” 元字符 说明 \ 转义字符 ^ 仅在作为第一个字符时,表明字符类取反 - 标记字符范围 元字符用法说明举例 1.转义(反斜线) \后紧跟着一个非字母数字字符,则取消该字符可能具有的任何特殊含义

正则表达式中常用符号

余生长醉 提交于 2019-12-29 07:28:49
一: 正则在Perl、Py森、Ruby、Java等语言中文本的正则表达式几乎是一样的 以前常用到的在网上都有现成的例子拿来用,比如电话格式、邮箱格式之类的。 但是自然语言处理中往往会根据自己的需求来制定一个表达式,如果正则的知识掌握的比较片面,在编写自然语言处理程序时可能会觉得苦恼。 在《自然语言处理简明教程》里面有很系统的正则表达式教程,特意总结出来消化吸收。 二: 双斜线“//”     最简单的正则表达式就是这样的,由类似于/hello world /的正则来搜索语料库中包含子字符串“hello world”的任何字符串相匹配。/e/是可以匹配到字符串h e llo的。 中括号“[]”     []会匹配其中的某一个字符。比如现在有嫌疑人,我们只知道他的名字可能是下面三种的某一种,分别是张伟、李伟或者黄伟。就可以使用/[张李黄]伟/来在人口数据库中匹配。 正则 匹配 模式例子 /[hH]/ello/ /[abc]/ /[1234567890]/ hello or Hello ‘a’或者’b’或者’c’ 数字 “ Hello !” “h a ppy~” “ 1 993年” {}表示限制长度。如:.{1}表示匹配一个任意字符 连字符“-”     用来划定范围,表示某一范围内的任何字符。比如上个例子里面的/[1234567890]/是不是感觉很不方便。如果表示为/[0-9]

正则截取某开头结尾中间的内容,但不包含开头、结尾

ぐ巨炮叔叔 提交于 2019-12-29 01:31:56
原文 https://blog.csdn.net/qq_38111015/article/details/80416823 var s = 'CN_11223sgsg-dsg23.mtl' var matchReg = /(?<=CN_).*?(?=.mtl)/; s.match(matchReg) 正则前瞻(?=)和非捕获性分组(?:)区别 (?=)会作为匹配校验,但不会出现在匹配结果字符串里面 (?:)会作为匹配校验,并出现在匹配结果字符里面, var data = 'windows 98 is ok'; data.match(/windows (?=\d+)/); // ["windows "] data.match(/windows (?:\d+)/); // ["windows 98"] data.match(/windows (\d+)/); // ["windows 98", "98"] 来源: https://www.cnblogs.com/liujinyu/p/11101394.html

PHP模板引擎正则替换函数 preg_replace 与 preg_replace_callback 使用总结

生来就可爱ヽ(ⅴ<●) 提交于 2019-12-28 08:47:57
在编写PHP模板引擎工具类时,以前常用的一个正则替换函数为 preg_replace() ,加上正则修饰符 /e ,就能够执行强大的 回调函数 ,实现模板引擎编译(其实就是字符串替换)。 详情介绍参考博文: PHP函数preg_replace() 正则替换所有符合条件的字符串 应用举例如下: <?php /** * 模板解析类 */ class Template { public function compile($template) { // if逻辑 $template = preg_replace("/\<\!\-\-\{if\s+(.+?)\}\-\-\>/e", "\$this->ifTag('\\1')", $template); return $template; } /** * if 标签 */ protected function ifTag($str) { //$str = stripslashes($str); // 去反转义 return '<?php if (' . $str . ') { ?>'; } } $template = 'xxx<!--{if $user[\'userName\']}-->yyy<!--{if $user["password"]}-->zzz'; $tplComplier = new Template(); $template

nginx正则配置解释和fastadmin

你。 提交于 2019-12-28 07:24:02
参考: http://www.cnblogs.com/netsa/p/6383094.html 1 2 3 4 5 6 7 8 9 10 11 1、^: 匹配字符串的开始位置; 2、 $:匹配字符串的结束位置; 3、.*: .匹配任意字符,*匹配数量0到正无穷; 4、\. 斜杠用来转义,\.匹配 . 特殊使用方法,记住记性了; 5、(值1|值2|值3|值4):或匹配模式,例:(jpg|gif|png|bmp)匹配jpg或gif或png或bmp 6、i不区分大小写   一.正则表达式匹配,其中: * ~ 为区分大小写匹配 * ~* 为不区分大小写匹配 * !~和!~*分别为区分大小写不匹配及不区分大小写不匹配 二.文件及目录匹配,其中: * -f和!-f用来判断是否存在文件 * -d和!-d用来判断是否存在目录 * -e和!-e用来判断是否存在文件或目录 * -x和!-x用来判断文件是否可执行 三.rewrite指令的最后一项参数为flag标记,flag标记有: 1.last 相当于apache里面的[L]标记,表示rewrite。 2.break本条规则匹配完成后,终止匹配,不再匹配后面的规则。 3.redirect 返回302临时重定向,浏览器地址会显示跳转后的URL地址。 4.permanent 返回301永久重定向,浏览器地址会显示跳转后的URL地址。

关于字符串的正则

喜夏-厌秋 提交于 2019-12-27 12:08:19
字符串的正则匹配,与相同字符串不相等的问题 字符串的正则匹配 电话号码的正则 数字的正则 字符串不相等的问题 字符串的正则匹配 电话号码的正则 /^1[3456789]\d{9}$ 表示当字符串以1开始且第二位字符是[3,4,5,6,7,8,9]中的任一一个最后跟上九位的数字,只有符合这种规则的字符串才是手机号码 数字的正则 /^[1-9]{1}[0-9]*|0{1}([.]{1}[0-9]+){0,1}$/ 其中 ^[1-9]{1}[0-9]*|0{1} 表示整数部分在不是一位数的情况下第一位不能为0, ([.]{1}[0-9]+){0,1} 表示小数部分只出现0 到一次,小数部分出现时,小数点只能出现一次 字符串不相等的问题 在获取到后台的数据或者是获取自己设置的json字符串时,会发现获取到的字符串不符合json的格式要求,但是将请求到的代码复制下来是可以成功的j转换成json对象的。此时将两者进行比较时会发现二者是不等的。将两个字符串进行 encodeURIComponent 转码操作后,会发现转码后的两个字符串并不是相同的。这种情况多是空格,或者换行等符号出现,虽然原来的字符串看不出来差别但是并不是相同的字符串。在做Json时,可以先使用正则将这些符号替换掉。再进行json转换,就不会出现这种结果了。 来源: CSDN 作者: O0_0O__ 链接: https:/

正则表达式

大城市里の小女人 提交于 2019-12-27 07:27:39
//正则默认:匹配成功就会结束匹配 (如果想全部查找加标识 g),不区分大小写 (如果想区分大小写 加标识 i) //1.test : 正则去匹配字符串,如果匹配成功返回真,匹配失败返回假; 正则.test(字符串) //2.search : 正则去匹配字符串,如果匹配成功就返回匹配位置,否则就返回 -1; 字符串.search(正则) //3.match : 正则去匹配字符串,如果匹配成功就返回匹配的数组,否则返回null; 字符串.match(正则) //4.replace : 正则去匹配字符串,匹配成功的字符去替换成新的字符串; 字符串.replace(正则,新的字符串), //第二个字符串也可以是个函数,函数的第一个参数就是匹配成功的字符 //---------------------------------------------------------------------------------- //匹配子项 : 小括号 () 还有另外一个意思分组操作 //把正则的整体叫做母亲,然后把左边第一个括号里面的正则叫做第一个子项,以此类推 var str = '2019-5-15'; var reg = /(\d+)(-)/g; str = str.replace(reg,function($0,$1){ //第一个参数是母亲,第二个参数是第一个子项 console

正则常用符号

不打扰是莪最后的温柔 提交于 2019-12-27 07:13:54
  \b是正则表达式规定的一个特殊代码(好吧,某些人叫它 元字符,metacharacter),代表着 单词的开头或结尾,也就是单词的分界处。虽然通常英文的单词是由空格,标点符号或者换行来分隔的,但是 \b并不匹配这些单词分隔字符中的任何一个,它 只匹配一个位置 。   .是另一个元字符,匹配 除了换行符以外的任意字符。    *同样是元字符,不过它代表的不是字符,也不是位置,而是数量——它指定* 前边的内容可以连续重复使用任意次以使整个表达式得到匹配。    .*连在一起就意味着 任意数量的不包含换行的字符。    \d是个新的元字符,匹配 一位数字(0,或1,或2,或……)。    \s匹配 任意的空白符,包括空格,制表符(Tab),换行符,中文全角空格等。    \w匹配 字母或数字或下划线或汉字等。    +是和 *类似的元字符,不同的是 *匹配 重复任意次(可能是0次),而 +则匹配 重复1次或更多次。    1.常用的元字符 代码 说明 . 匹配除换行符以外的任意字符 \w 匹配字母或数字或下划线或汉字 \s 匹配任意的空白符 \d 匹配数字 \b 匹配单词的开始或结束 ^ 匹配字符串的开始 $ 匹配字符串的结束   元字符 ^(和数字6在同一个键位上的符号)和 $都匹配一个位置,这和 \b有点类似。 ^匹配你要用来查找的字符串的开头, $匹配结尾。    表2

js正则记录

懵懂的女人 提交于 2019-12-26 23:19:10
全局标志g let reg=/^\d+$/g; reg.test(123); // true reg.test(123); // false 出现以上问题是因为reg的g属性,设置的全局匹配。RegExp有一个lastIndex属性,来保存索引开始的位置,当第一次执行以后,lastIndex为0,第二次调用以后变成了3,导致问题出现。 解决办法: 1.去掉g,2.在调用以后将lastIndex设为0 ^的用法 1.作为开头标记 // 以test开头 let reg=/^test/; let test1=reg.test('test111'); // true let test2=reg.test('111test'); // false 2.取反 // 不以t开头 作为取反的时候必须在[]中 let reg=/^[^t]/; let test1=reg.test('tes111'); // false let test2=reg.test('111test'); // true $的用法 // 以test结束 let reg=/test$/; let test1=reg.test('tes111'); let test2=reg.test('111test'); split正则用法 let reg=/\s*,\s*/; let str1='1,2,3'; str1.split

js正则

元气小坏坏 提交于 2019-12-26 20:51:09
RegExp 是正则表达式的缩写。 RegExp 对象用于存储检索模式。 RegExp 对象的方法 RegExp 对象有 3 个方法:test()、exec() 以及 compile()。 test() test() 方法检索字符串中的指定值。返回值是 true 或 false。 exec() exec() 方法检索字符串中的指定值。返回值是被找到的值。如果没有发现匹配,则返回 null。 compile() compile() 方法用于改变 RegExp。 compile() 既可以改变检索模式,也可以添加或删除第二个参数。 正则表达式中的特殊字符 \   表示转义 ^   表示匹配输入的开始 $    表示匹配输入的结束 *    一个表达式的多次或0次 +   匹配前面一个表达式一次或多次 ?    匹配前面一个表达式0次或者一次 ??? .   匹配除换行符之外的任何单个字符 [abc]   查找方括号之间的字符 [^abc]   查找不在方括号之间的字符 (a|b|c)   查找任何指定选项 \w   查找单词字符 \W   查找非单词字符 \d   查找数字字符 \D 查找非数字字符 \s   查找空字符 \S 查找非空白字符 修饰符 修饰符 描述 i 执行对大小写不敏感的匹配。 g 执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)。 m 执行多行匹配。 方括号