正则表达式

带你快速掌握_正则表达式(一)

廉价感情. 提交于 2020-04-06 11:03:11
正则表达式 一. 引言&概述 为什么要讲正则表达式? 帮我们简化字符串的操作(判断、替换、切割 ….. ) 正则表达式: 正确规则 的表达式 作用: 简化字符串的操作(判断、替换、切割 ….. ) 伪代码: 判断当前字符串是否为一个QQ号 正确规则的式子: “ 要求是纯数字,要求5~10位,不能以0开头 ” 二.快速入门使用 话不多说,直接上案例使用: 检查校验字符串中的QQ号是否如何如下规则: ①必须为5~15位数字 ②不能以0开头 如果不用正则是这样写的: /* * 入门案例:不用正则 * */ public static void main(String[] args) { //1、准备一个待校验的QQ号 String str = "1231234"; //2、判断:QQ号必须是数字 try { int i = Integer.parseInt(str); } catch (NumberFormatException e) { System.out.println("QQ号不对"); return; } //3、判断:QQ号5~15位之间,不能以0开头 if(str.length()>=5 && str.length()<=15 && !str.startsWith("0")){ System.out.println("QQ号格式正确"); }else{ System.out

文本处理工具和正则表达式

三世轮回 提交于 2020-04-06 09:46:03
1 文本编辑工具之神VIM 1.1 vi和vim简介 在Linux中我们经常编辑修改文本文件,即由ASCII,Unicode或其他编码的纯文字的文件。 文本编辑种类: 全屏编辑器:nano(字符工具),gedit(图形化工具),vi,vim 行编辑器:sed vi Visual editor,文本编辑器,是Linux必备工具之一,功能强大,学习曲线较陡峭,学习难度大 vim VIsual editor iMproved,和vi使用方法一致,但功能更为强大。 1.2 使用vim初步 1.2.1 vim命令格式 vim [OPTION]... FILE... 常用选项 +# 打开文件后,让光标处于第#行的行首,+默认行尾 +/PATTERN 让光标处于第一个被PATTERN匹配到的行行首 -b file 二进制方式打开文件 -d file1 file2... 比较多个文件,相当于vimdiff -m file 只读打开文件 -e file 直接进入ex模式,相当于执行ex file 说明: 如果该文件存在,文件被打开并显示内容 如果该文件不存在,当编辑后第一次存盘时创建它 1.2.2 三种主要模式和转换 vim是一个模式编辑器,击键行为是依赖于vim的“模式” 三种常见模式: 命令或普通(Normal)模式:默认模式,可以实现移动光标,剪切/粘贴文本 插入(Insert)或编辑模式

03 特殊字符

坚强是说给别人听的谎言 提交于 2020-04-06 08:21:30
1. # 注释, #! 除外 # 前后最好有个空格 此外, 在参数替换 echo ${PATH#*:} 这里不表示注释, 数制转换, 不表示注释 echo $((2#101011)) echo “The # does not begin a comment” 这里由于在””号内, 所以不是注释 echo The \# does not begin a comment 这里注意, 因为\这个转义字符, 把本来是注释的内容, 给转义成普通符号 2. ; 命令行分隔符, 可以在一行中写多个命令. echo hello; echo there 3. ;; 终止 case 选项 case “$variable” in abc) echo “\$variable = abc”;; xyz) echo “\$variable = xyz”;; esac 4. . 隐藏文件前缀 .命令等价于source . 表示当前目录 .. 表示上一级目录 正则表达式中作为单个字符匹配 5. “”, ‘’ 双引号, 单引号, 其中双引号中可以引用变量, 而单引号中不行, 它们的作用是组织特殊字符 6. \ 转义字符 7. / 文件名分隔符, 除法操作 8. ` (Esc 下边的按钮) 后置引用, 命令替换 9. : 空命令, 等价于 “NOP” 也可被认为是 shell 内建命令 true 作用相同, 例如:

文本处理工具和正则表达式、SHELL脚本编程

断了今生、忘了曾经 提交于 2020-04-06 03:30:37
一、文本编辑工具VIM ●命令模式 --> 插入模式 i insert, 在光标所在处输入 I 在当前光标所在行的行首输入 a append, 在光标所在处后面输入 A 在当前光标所在行的行尾输入 o 在当前光标所在行的下方打开一个新行 O 在当前光标所在行的上方打开一个新行 ●插入模式 --- ESC-----> 命令模式 ●命令模式 ----:----> 扩展命令模式 ●扩展命令模式 ---ESC,enter---->命令模式 1、进入编辑界面首先为命令模式,按o键切换为插入模式,且光标切换到当前行的 下一行行首另起一行。 2、 进入编辑界面首先为命令模式,按 O键切换为插入模式,且光标切换到当前行的 上一行行首另起一行。 3、进入编辑界面首先为命令模式,按A键切换为插入模式,且光标切换到当前行的 行尾。 4、命令模式输入:r后加文件名称,可将文件内容读到当前文件中。 5、命令模式下输入:!加命令可不退出文本编辑界面执行命令,输入:r!加命令可将执行命令的输出读入到当前光标所在行。 6、命令模式下输入:set number 可显示行号。 7、命令模式下输入:2,4d,表示删除2-4行的内容,:2,4y复制2-4行的内容,在光标所在行按p键即可粘贴内容。(p贴在当前行的后一行,P贴在当行的后一行) 8、搜索替换内容,命令模式下输入,该命令为搜索1-5行的root,将1

python核心编程正则表达式练习题1-2匹配由单个空格分隔的任意单词对,也就是性和名

隐身守侯 提交于 2020-04-06 03:01:02
# 匹配由单个空格分隔的任意单词对,也就是姓和名 1 import re 2 3 patt = '[A-Za-z]+ [A-Za-z]+' # 方法一 +加号操作符匹配它左边的正则表达式至少出现一次的情况 4 # patt = '[A-Za-z]+[ A-Za-z]+' # 方法二 5 # patt = '[A-Za-z]+\s[A-Za-z]+' # 方法三 \s匹配空白 6 name1 = 'zhang san' 7 name2 = 'li si' 8 name3 = 'wang ermazi' 9 10 m = re.match(patt, name1) 11 m1 = re.match(patt, name2) 12 m2 = re.match(patt, name3) 13 if m is not None: 14 print(m.group()) 15 if m is not None: 16 print(m1.group()) 17 if m is not None: 18 print(m2.group()) """/usr/bin/python3.5 /studydisk/other/正则表达式/demo2.pyzhang sanli siwang ermazi""" 来源: https://www.cnblogs.com/ranxf/p/11365243.html

马哥博客作业第三周

戏子无情 提交于 2020-04-06 02:09:08
正则表达式 一.文本编辑工具 1.文本编辑之神vim 1.1 vim的三种模式: 命令或普通(Normal)模式:默认模式,可以实现移动光标,剪切/粘贴文本 插入(Insert)或编辑模式:用于修改文本 扩展命令(extended command )或命令(末)行模式:保存,退出等 1.2 模式切换: 插入模式 --- ESC-----> 命令模式 命令模式 ---- : ----> 扩展命令模式 扩展命令模式 ----ESC,enter----> 命令模式 1.3 扩展模式的基本命令 w 写(存)磁盘文件 wq 写入并退出 x 写入并退出 X 加密 q 退出 q! 不存盘退出,即使更改都将丢失 r filename 读文件内容到当前文件中 w filename 将当前文件内容写入另一个文件 !command 执行命令 r!command 读入命令的输出 1.4 命令模式的基本命令 ZZ 保存退出 ZQ 不保存退出 1.4.2 光标跳转 字符间跳转: h: 左 L: 右 j: 下 k: 上 单词间跳转: w:下一个单词的词首 e:当前或下一单词的词尾 b:当前或前一个单词的词首 当前页跳转: H:页首 M:页中间行 L:页底 zt:将光标所在当前行移到屏幕顶端 zz:将光标所在当前行移到屏幕中间 zb:将光标所在当前行移到屏幕底端 行首行尾跳转: ^ 跳转至行首的第一个非空白字符

一起学Python:正则表达式概述

笑着哭i 提交于 2020-04-06 00:16:18
re模块操作 在Python中需要通过正则表达式对字符串进行匹配的时候,可以使用一个模块,名字为re 1. re模块的使用过程 #coding=utf-8 # 导入re模块 import re # 使用match方法进行匹配操作 result = re.match(正则表达式,要匹配的字符串) # 如果上一步匹配到数据的话,可以使用group方法来提取数据 result.group() 2. re模块示例(匹配以itcast开头的语句) #coding=utf-8 import re result = re.match("itcast","itcast.cn") result.group() 运行结果为: itcast 3. 说明 re.match() 能够匹配出以xxx开头的字符串 匹配单个字符 在上一小节中,了解到通过re模块能够完成使用正则表达式来匹配字符串 本小节,将要讲解正则表达式的单字符匹配 字符 功能 . 匹配任意1个字符(除了\n) [ ] 匹配[ ]中列举的字符 \d 匹配数字,即0-9 \D 匹配非数字,即不是数字 \s 匹配空白,即 空格,tab键 \S 匹配非空白 \w 匹配单词字符,即a-z、A-Z、0-9、_ \W 匹配非单词字符 示例1: #coding=utf-8import re ret = re.match(".","M") print(ret

正则表达式整理说明

99封情书 提交于 2020-04-05 20:05:11
感觉比较全的并且讲的比较明白的 正则表达式使用说明 https://www.jb51.net/article/43190.htm 常用正则表达式整理收集分享。 1 . 校验密码强度 密码的强度必须是包含大小写字母和数字的组合,不能使用特殊字符,长度在8-10之间。 ^(?=.*\\d)(?=.*[a-z])(?=.*[A-Z]).{8,10}$ 2. 校验中文 字符串仅能是中文。 ^[\\u4e00-\\u9fa5]{0,}$ 3. 由数字、26个英文字母或下划线组成的字符串 ^\\w+$ 4. 校验E-Mail 地址 同密码一样,下面是E-mail地址合规性的正则检查语句。 [\\w!#$%&'*+/=?^_`{|}~-]+(?:\\.[\\w!#$%&'*+/=?^_`{|}~-]+)*@(?:[\\w](?:[\\w-]*[\\w])?\\.)+[\\w](?:[\\w-]*[\\w])? 5. 校验身份证号码 下面是身份证号码的正则校验。15 或 18位。 15位: ^[1-9]\\d{7}((0\\d)|(1[0-2]))(([0|1|2]\\d)|3[0-1])\\d{3}$ 18位: ^[1-9]\\d{5}[1-9]\\d{3}((0\\d)|(1[0-2]))(([0|1|2]\\d)|3[0-1])\\d{3}([0-9]|X)$ 6. 校验日期 “yyyy

Python:对输入的单词进行字典序排序输出

生来就可爱ヽ(ⅴ<●) 提交于 2020-04-05 14:59:04
题目描述: 对输入的单词进行字典序排序输出,字典序定义: 1.单词中字母比较不区分大小写,两个单词先以第一个字母作为排序的基准, 如果第一个字母相同,就用第二个字母为基准, 如果第二个字母相同就以第三个字母为基准。 依此类推,如果到某个字母不相同,字母顺序在前的那个单词顺序在前。 2.当一个短单词和一个长单词的开头部分都相同(即短单词是长单词从首字母开始的一部分),短单词顺序在前。 3.字母大小写不同的相同单词,只输出一次。 输入描述:不超过255个字符中,单词间用空格进行分隔,为简单起见,单词不包含连字符,无其它标点符号。 输出描述:输出排序后的单词,单词之间用空格隔开(最后不带空格),重复的单词只输出一次。 解答: import re def zdx(sword): l = [] temp = sword.split(" ") for i in temp: if i.lower() not in [j.lower() for j in l]: l.append(i) return " ".join(sorted(l, key=str.lower)) while True: s = input("请输入用空格进行分隔的单词:") if len(s) <= 255: p = re.compile(r"^[a-zA-Z\s]{0,255}$") if p.match(s):