正则表达式

正则表达式

冷暖自知 提交于 2020-02-08 16:38:57
简述 正则表达式,又称规则表达式。(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。 许多程序设计语言都支持利用正则表达式进行字符串操作。例如,在 Perl 中就内建了一个功能强大的正则表达式引擎。正则表达式这个概念最初是由 Unix 中的工具软件(例如sed和 grep )普及开的。正则表达式通常缩写成“regex”, 单数 有regexp、regex, 复数 有regexps、regexes、regexen,查询字符串时可能需要满足某些复杂规则,这时就可以使用正则表达式来定义这些复制规则,。 基础语法 单个字符(数量:1) 字符:表示由一位字符所组成 \\:表示转义字符”\“ \t:表示一个制表符符号 \n:匹配换行(\n)符号 字符集(数量:1) [abc]:表示可能是字符a或是字符b或是字符c中的任意一位 [^abc]:表示不是字符a或是字符b或是字符c中的任意一位 [a-z]:所有的小写字母 [a-zA-Z]:字母中的任意一位 [A-Z]:所有的大写字母 [0-9]:表示任意一位数字(只有一位,则范围为0到9) 简化的字符集表达式(数量:1) . :表示任意的一位字符 \d:等价于"[0-9]",属于简化写法,\需要转义 \D:等价于"[^0

Java 正则表达式 regex 提取字符

。_饼干妹妹 提交于 2020-02-08 13:40:24
直接上代码: 1 @Test 2 3 public void contextLoads() { 4 5 /*String str="this is (Tom) and \"Eric\", this is \"Bruce lee\", he is a chinese, name is \"李小龙\"。"; 6 7 Pattern p= Pattern.compile("\"(.*?)\""); 8 9 Matcher m=p.matcher(str); 10 11 while(m.find()){ 12 13 System.out.println(m.group()); 14 15 }*/ 16 17 18 19 20 21 /*String str="this is [Tom] and , he is a [chinese], name [is]。"; 22 23 Matcher mat = Pattern.compile("(?<=\\[)(\\S+)(?=\\])").matcher(str); 24 25 while(mat.find()){ 26 27 System.out.println(mat.group()); 28 29 }*/ 30 31 32 33 34 35 String filetext = "//[张小名] 25分//[李小花] 43分//[王力]

Django之URL调度器

社会主义新天地 提交于 2020-02-08 10:31:34
工作原理 django 通过 urlconf 来映射视图函数,只区分路径,不区分 http 方法 Django 确定要使用的根 URLconf 模块,一般是在 settings 中的 ROOT_URLCONF 设置的值 如果传入 HttpRequest 对象具有一个 urlconf 属性(由中间件设置),则其值将用于代替 ROOT_URLCONF 设置。 Django 加载该 URLconf 模块并查找变量 urlpatterns ,它是一个列表 django.urls.path() 和 / 或 django.urls.re_path() 实例。 Django 按顺序遍历每个 URL 模式,并停在与请求的 URL 匹配的第一个 URL 模式,需要特别注意编写的顺序 一旦某个 URL 模式匹配, Django 就会导入并调用给定的视图,该视图是一个简单的 Python 函数(或基于类的视图方法)。 如果没有 URL 模式匹配,或者在此过程中的任何点发生异常, Django 将调用适当的错误处理视图 简单示例 from django . urls import path from . import views urlpatterns = [ path ( 'articles/2003/' , views . special_case_2003 ) , path ( 'articles/

正则表达式

偶尔善良 提交于 2020-02-08 10:10:39
正则表达式 正则表达式(英语:Regular Expression,在代码中常简写为regex)。 正则表达式是一个字符串,使用单个字符串来描述、用来定义匹配规则,匹配一系列符合某个句法规则的字符串。在开发中,正则表达式通常被用来检索、替换那些符合某个规则的文本。 正则表达式匹配规则 正则表达式的语法规则: 字符:x 含义:代表的是字符x 例如:匹配规则为 “a”,那么需要匹配的字符串内容就是 ”a” 字符:\ 含义:代表的是反斜线字符’’ 例如:匹配规则为"\" ,那么需要匹配的字符串内容就是 ”\” 字符:\t 含义:制表符 例如:匹配规则为"\t" ,那么对应的效果就是产生一个制表符的空间 字符:\n 含义:换行符 例如:匹配规则为"\n",那么对应的效果就是换行,光标在原有位置的下一行 字符:\r 含义:回车符 例如:匹配规则为"\r" ,那么对应的效果就是回车后的效果,光标来到下一行行首 字符类:[abc] 含义:代表的是字符a、b 或 c 例如:匹配规则为"[abc]" ,那么需要匹配的内容就是字符a,或者字符b,或字符c的一个 字符类:[^abc] 含义:代表的是除了 a、b 或 c以外的任何字符 例如:匹配规则为"[^abc]",那么需要匹配的内容就是不是字符a,或者不是字符b,或不是字符c的任意一个字符 字符类:[a-zA-Z] 含义:代表的是a 到 z 或 A

leetcode 10. 正则表达式匹配

一世执手 提交于 2020-02-08 08:04:40
题目 : 给定一个字符串 ( s ) 和一个字符模式 ( p )。实现支持 '.' 和 '*' 的正则表达式匹配。 '.' 匹配任意单个字符。 '*' 匹配零个或多个前面的元素。 匹配应该覆盖整个字符串 ( s ) ,而不是部分字符串。 说明: s 可能为空,且只包含从 a-z 的小写字母。 p 可能为空,且只包含从 a-z 的小写字母,以及字符 . 和 * 。 示例 1: 输入: s = "aa" p = "a" 输出: false 解释: "a" 无法匹配 "aa" 整个字符串。 示例 2: 输入: s = "aa" p = "a*" 输出: true 解释: '*' 代表可匹配零个或多个前面的元素, 即可以匹配 'a' 。因此, 重复 'a' 一次, 字符串可变为 "aa"。 示例 3: 输入: s = "ab" p = ".*" 输出: true 解释: ".*" 表示可匹配零个或多个('*')任意字符('.')。 示例 4: 输入: s = "aab" p = "c*a*b" 输出: true 解释: 'c' 可以不被重复, 'a' 可以被重复一次。因此可以匹配字符串 "aab"。 示例 5: 输入: s = "mississippi" p = "mis*is*p*." 输出: false 思路:   这是一个经典的动态规划问题,在面试中经常考到,值得反复练习~  

正则表达式特殊符号处理

假装没事ソ 提交于 2020-02-08 05:34:06
如果要查找文件名中有*的文件,则需要对*进行转义,即在其前加一个\。ls \*.txt。正则表达式有以下特殊字符。需要转义 特别字符 说明 $ 匹配输入字符串的结尾位置。如果设置了 RegExp 对象的 Multiline 属性,则 $ 也匹配 ‘\n' 或‘\r'。要匹配 $ 字符本身,请使用 \$。 ( ) 标记一个子表达式的开始和结束位置。子表达式可以获取供以后使用。要匹配这些字符,请使用 \( 和 \)。 * 匹配前面的子表达式零次或多次。要匹配 * 字符,请使用 \*。 + 匹配前面的子表达式一次或多次。要匹配 + 字符,请使用 \+。 . 匹配除换行符 \n之外的任何单字符。要匹配 .,请使用 \。 [ ] 标记一个中括号表达式的开始。要匹配 [,请使用 \[。 ? 匹配前面的子表达式零次或一次,或指明一个非贪婪限定符。要匹配 ? 字符,请使用 \?。 \ 将下一个字符标记为或特殊字符、或原义字符、或向后引用、或八进制转义符。例如, ‘n' 匹配字符‘n'。'\n' 匹配换行符。序列 ‘\\' 匹配 “\”,而 ‘\(' 则匹配 “(”。 ^ 匹配输入字符串的开始位置,除非在方括号表达式中使用,此时它表示不接受该字符集合。要匹配 ^ 字符本身,请使用 \^。 { } 标记限定符表达式的开始。要匹配 {,请使用 \{。 | 指明两项之间的一个选择。要匹配 |,请使用 \|

正则表达式需要转义的字符

蹲街弑〆低调 提交于 2020-02-08 05:26:37
特别字符 说明 $ 匹配输入字符串的结尾位置。如果设置了 RegExp 对象的 Multiline 属性,则 $ 也匹配 ‘\n' 或 ‘\r'。要匹配 $ 字符本身,请使用 \$。 ( ) 标记一个子表达式的开始和结束位置。子表达式可以获取供以后使用。要匹配这些字符,请使用 \( 和 \)。 * 匹配前面的子表达式零次或多次。要匹配 * 字符,请使用 \*。 + 匹配前面的子表达式一次或多次。要匹配 + 字符,请使用 \+。 . 匹配除换行符 \n之外的任何单字符。要匹配 .,请使用 \。 [ ] 标记一个中括号表达式的开始。要匹配 [,请使用 \[。 ? 匹配前面的子表达式零次或一次,或指明一个非贪婪限定符。要匹配 ? 字符,请使用 \?。 \ 将下一个字符标记为或特殊字符、或原义字符、或向后引用、或八进制转义符。例如, ‘n' 匹配字符 ‘n'。'\n' 匹配换行符。序列 ‘\\' 匹配 “\”,而 ‘\(' 则匹配 “(”。 ^ 匹配输入字符串的开始位置,除非在方括号表达式中使用,此时它表示不接受该字符集合。要匹配 ^ 字符本身,请使用 \^。 { } 标记限定符表达式的开始。要匹配 {,请使用 \{。 | 指明两项之间的一个选择。要匹配 |,请使用 \|。 所以是 * . ? + $ ^ [ ] ( ) { } | \ / 来源: https://www.cnblogs

正则表达式 - 转义字符

久未见 提交于 2020-02-08 05:24:16
如果要查找文件名中有*的文件,则需要对*进行转义,即在其前加一个\。ls \*.txt。正则表达式有以下特殊字符。需要转义 特别字符 说明 $ 匹配输入字符串的结尾位置。如果设置了 RegExp 对象的 Multiline 属性,则 $ 也匹配 ‘\n' 或 ‘\r'。要匹配 $ 字符本身,请使用 \$。 ( ) 标记一个子表达式的开始和结束位置。子表达式可以获取供以后使用。要匹配这些字符,请使用 \( 和 \)。 * 匹配前面的子表达式零次或多次。要匹配 * 字符,请使用 \*。 + 匹配前面的子表达式一次或多次。要匹配 + 字符,请使用 \+。 . 匹配除换行符 \n之外的任何单字符。要匹配 .,请使用 \。 [ ] 标记一个中括号表达式的开始。要匹配 [,请使用 \[。 ? 匹配前面的子表达式零次或一次,或指明一个非贪婪限定符。要匹配 ? 字符,请使用 \?。 \ 将下一个字符标记为或特殊字符、或原义字符、或向后引用、或八进制转义符。例如, ‘n' 匹配字符 ‘n'。'\n' 匹配换行符。序列 ‘\\' 匹配 “\”,而 ‘\(' 则匹配 “(”。 ^ 匹配输入字符串的开始位置,除非在方括号表达式中使用,此时它表示不接受该字符集合。要匹配 ^ 字符本身,请使用 \^。 { } 标记限定符表达式的开始。要匹配 {,请使用 \{。 | 指明两项之间的一个选择。要匹配 |,请使用

正则表达式显示中括号[]

主宰稳场 提交于 2020-02-08 05:23:38
调皮的前后中括号([])正则匹配 在正则表达式中,前中括号 [ 属于特殊字符,要匹配它,需要转义,即加上 \;而后中括号 ] 不属于特殊字符,不必加转义字符。 var pattern = "(\[{1})"; // 错误,正确应该为:([\[]{1}) var flag = "gi"; var reg = new RegExp(pattern, flag); reg.exec("<>[]"); alert(RegExp.$1); 以上代码是不正确的,错误在 pattern,应该写作 ([[]{1})。即:对于前中括号 [,除了转义字符,还应该用中括号括起来。 似乎不稀奇,稀奇在对后括号 ] 的处理上。 var pattern = "([\]]{1})"; // 错误,正确应该为:(]{1}) var flag = "gi"; var reg = new RegExp(pattern, flag); reg.exec("<>[]"); alert(RegExp.$1); 以上代码在 IE 中是正确的,但在 Chrome 中,它确得不到我们想要的结果,错误同样在 pattern,应该写作 (]{1})。即:对于后中括号 ],应该直接写,既不能用转义字符,也不能用中括号括起来。 资料:正则表达式中的特殊字符(需要转义) ^ 匹配输入字符串的开始位置,除非在方括号表达式中使用