正则表达式

正则表达式re模块

青春壹個敷衍的年華 提交于 2020-02-21 05:22:13
常用正则表达式符号 '.' 默认匹配除\n之外的任意一个字符,若指定flag DOTALL,则匹配任意字符,包括换行 '^' 匹配字符开头,若指定flags MULTILINE,这种也可以匹配上(r"^a","\nabc\neee",flags=re.MULTILINE) '$' 匹配字符结尾,或e.search("foo$","bfoo\nsdfsf",flags=re.MULTILINE).group()也可以 '*' 匹配*号前的字符0次或多次,re.findall("ab*","cabb3abcbbac") 结果为['abb', 'ab', 'a'] '+' 匹配前一个字符1次或多次,re.findall("ab+","ab+cd+abb+bba") 结果['ab', 'abb'] '?' 匹配前一个字符1次或0次 '{m}' 匹配前一个字符m次 '{n,m}' 匹配前一个字符n到m次,re.findall("ab{1,3}","abb abc abbcbbb") 结果'abb', 'ab', 'abb'] '|' 匹配|左或|右的字符,re.search("abc|ABC","ABCBabcCD").group() 结果'ABC' '(...)' 分组匹配,re.search("(abc){2}a(123|456)c", "abcabca456c").group() 结果

入门正则表达式

大兔子大兔子 提交于 2020-02-21 05:22:03
JavaScript的正则表达式必须放在两条斜线之间,如/abc/就是一个正则表达式,知识这个正则表达式只能匹配“abc”字符串 d是digit的意思,代表数字;s是space的意思,代表空白;w是word的意思,代表单词。d、s、w的大写形式恰好匹配与之相反的字符 特殊字符: 来源: CSDN 作者: victor_yjx 链接: https://blog.csdn.net/victor_yjx/article/details/104417757

正则表达式解析

守給你的承諾、 提交于 2020-02-20 14:46:50
对于正则表达式,第一眼时觉得完全没有规律可寻,而且全是一堆各种各样的特殊符号,完全不知所云。其实唯一难的就是组合起来之后,可读性比较差,而且不容易理解,其实能看得懂简单的正则表达式,写得出简单的正则表达式,用以满足日常的需求即可。学习正则表达式的最好方法是从例子开始,理解例子之后再自己对例子进行修改实践。 一、正则表达式说明 1.简介 正则表达式(regular expression)是一种特殊的字符串模式(pattern),用于匹配一组字符串,可以用来检查一个串是否含有某种子串,将匹配的子串替换或者从某个串中取出符合某个条件的子串等。 通俗的说,正则表达式好比用模具做产品,而正则就是这个模具,定义一种规则去匹配符合规则的字符。 2.常用的正则匹配工具 在线匹配工具: http://www.regexpal.com/ http://rubular.com/ 正则匹配软件:McTracer 3.正则匹配的用途 匹配验证: 判断给定的字符串是否符合正则表达式所指定的过滤规则,从而可以判断某个字符串的内容是否符合特定的规则(如email地址、手机号码等),当正则表达式用于匹配验证时,通常需要在正则表达式字符串的首部和尾部加上^和$,以匹配整个待验证的字符串。 查找与替换: 判断给定字符串中是否包含满足正则表达式所指定的匹配规则的子串,如查找一段文本中的所包含的IP地址。另外

Linux下的sed命令使用详解

空扰寡人 提交于 2020-02-18 07:20:56
sed是stream editor的简称,也就是流编辑器。它一次处理一行内容,处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”pattern space,接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有 改变,除非你使用重定向存储输出。 使用语法 sed命令的使用规则是这样的: sed [option] 'command' input_file 其中option是可选的,常用的option有如下几种: -n 使用安静silent模式(想不通为什么不是-s)。在一般sed的用法中,所有来自stdin的内容一般都会被列出到屏幕上。但如果加上-n参数后,则只有经过sed特殊处理的那一行(或者动作)才会被列出来; -e 直接在指令列模式上进行 sed 的动作编辑; -f 直接将 sed 的动作写在一个文件内, -f filename 则可以执行filename内的sed命令; -r 让sed命令支持扩展的正则表达式(默认是基础正则表达式); -i 直接修改读取的文件内容,而不是由屏幕输出。 常用的命令有以下几种: a \:追加行append, a \的后面跟上字符串s(多行字符串可以用\n分隔),则会在当前选择的行的后面都加上字符串s; c \:取代/替换行change,c \后面跟上字符串s

正则表达式

末鹿安然 提交于 2020-02-18 03:28:05
1、\w:匹配包括下划线的任何单词字符。类似但不等价于“[A-Za-z0-9_]”,这里的"单词"字符使用Unicode字符集。 \W:匹配任何非单词字符。等价于“[^A-Za-z0-9_]” 来源: CSDN 作者: youzjuer 链接: https://blog.csdn.net/youzjuer/article/details/104355980

Java正则表达式

偶尔善良 提交于 2020-02-17 23:35:41
一.Java中的正则表达式的一些特点 1.java中 \\ 表示正则表达式,所以^\d+(\.\d+)?,可以匹配的实例:"5", "1.5" 和 "2.21"。但在程序中要写成 ^\\d+(\\.\\d+)? 2.普通的反斜线表示为:\\\\    二.String内建的正则表达式功能   1.boolean matches(String regex)  检验这个字符串是否匹配给定的regex(正则表达式) 例: System.out.println( "+911".matches("-|\\+)?\\d+) )    //true   2. String[] split(String regex)                字符串分割    String[] split(String regex, int limit)   3.替换    String replaceFirst(String regex,String replacement)   String replaceAll(String regex,String replacement) 三.Pattern和Matcher Pattern:模式  Matcher:匹配器(引擎) 习惯用法: Pattern pattern = Pattern.compile(regex); Matcher matcher =

JS正则表达式总结

旧城冷巷雨未停 提交于 2020-02-17 20:07:06
第一部分 基础知识 一、正则申明方式 1、构造函数方式 var reg = new RegExp('\d', 'gi'); ● 通过 new 构造一个正则表达式对象,其中第一个参数 '\d' 是正则内容,第二个参数 'gi' 是修饰符。两个参数皆为字符串类型 ● 修饰符的作用是对匹配过程进行限定 ● 修饰符有三种:i, g, m,可以同时出现,没有顺序(即 gi 与 ig 一样),请参考下方说明 修饰符 说明 i 忽略大小写匹配 g 全局匹配,即是匹配一个后继续匹配,直到结束 m 多行匹配,即是遇到换行后不停止匹配,直到结束 说明 : ● [a-z] 表示从小写字母a到小写字母z之间的任意字符(含a和z),下文会有详细说明 ● + 表示至少出现一次 ● \n 在js中表示换行 ● ^[a-z] 表示以任意小写字母开头的行 'aBcd efg'.match(/[a-z]+/); // ["a"] 'aBcd efg'.match(/[a-z]+/i); // ["aBcd"] 'aBcd efg'.match(/[a-z]+/g); // ["a", "cd", "efg"] 'aBcd efg'.match(/[a-z]+/gi); // ["aBcd", "efg"] 'aB\ncd\n efg'.match(/^[a-z]+/m); // ["a"] 'aB\ncd\n efg

python3正则表达式

余生长醉 提交于 2020-02-17 14:41:55
re.match函数 re.match函数尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none。 函数语法: re.match(pattern, string, flags=0) 函数参数说明: 参数 描述 pattern 匹配的正则表达式 string 要匹配的字符串 flags 标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配 匹配成功re.match方法返回一个匹配的对象,否则返回None。 可以使用group(num) 或 groups() 匹配对象函数来获取匹配表达式。 示例 import re line = "Cats are smarter than dogs" # .* 表示任意匹配除换行符(\n、\r)之外的任何单个或多个字符 matchObj = re . match ( r '(.*) are (.*?) .*' , line , re . M | re . I ) if matchObj : print ( "matchObj.group() : " , matchObj . group ( ) ) print ( "matchObj.group(1) : " , matchObj . group ( 1 ) ) print ( "matchObj.group(2) : " , matchObj .

防止SQL注入的五种方法

穿精又带淫゛_ 提交于 2020-02-17 03:17:08
一、SQL注入简介 SQL注入是比较常见的网络攻击方式之一,它不是利用操作系统的BUG来实现攻击,而是针对程序员编程时的疏忽,通过SQL语句,实现无帐号登录,甚至篡改数据库。 二、SQL注入攻击的总体思路 1.寻找到SQL注入的位置 2.判断服务器类型和后台数据库类型 3.针对不通的服务器和数据库特点进行SQL注入攻击 三、SQL注入攻击实例 比如在一个登录界面,要求输入用户名和密码: 可以这样输入实现免帐号登录: 用户名: ‘or 1 = 1 – 密 码: 点登陆,如若没有做特殊处理,那么这个非法用户就很得意的登陆进去了.(当然现在的有些语言的数据库API已经处理了这些问题) 这是为什么呢? 下面我们分析一下: 从理论上说,后台认证程序中会有如下的SQL语句: String sql = "select * from user_table where username= ' "+userName+" ' and password=' "+password+" '"; 当输入了上面的用户名和密码,上面的SQL语句变成: SELECT * FROM user_table WHERE username= '’or 1 = 1 -- and password='’ 分析SQL语句: 条件后面username=”or 1=1 用户名等于 ” 或1=1 那么这个条件一定会成功; 然后后面加两个

SQL注入原理

核能气质少年 提交于 2020-02-17 02:44:59
原文地址:http://www.cnblogs.com/rush/archive/2011/12/31/2309203.html 1.1.1 摘要 日前,国内最大的程序员社区CSDN网站的用户 数据库 被黑客公开发布,600万用户的登录名及密码被公开泄露,随后又有多家网站的用户密码被流传于网络,连日来引发众多网民对自己账号、密码等互联网信息被盗取的普遍担忧。 网络安全成为了现在互联网的焦点,这也恰恰触动了每一位用户的神经,由于设计的漏洞导致了不可收拾的恶果,验证了一句话“出来混的,迟早是要还的”,所以我想通过专题博文介绍一些常用的攻击技术和防范策略。 SQL Injection也许很多人都知道或者使用过,如果没有了解或完全没有听过也没有关系,因为接下来我们将介绍SQL Injection。 1.1.2 正文 SQL Injection:就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。 具体来说,它是利用现有应用程序,将(恶意)的SQL命令注入到后台数据库引擎执行的能力,它可以通过在Web表单中输入(恶意)SQL语句得到一个存在安全漏洞的网站上的数据库,而不是按照设计者意图去执行SQL语句。 首先让我们了解什么时候可能发生SQL Injection。 假设我们在浏览器中输入URL www.sample.com