0

0

正则表达式

巴扎黑

巴扎黑

发布时间:2017-07-21 10:03:23

|

2386人浏览过

|

来源于php中文网

原创

一、正则表达式

1、匹配字符的类型

  • [a-z]:小写字母

  • [A-Z]:大写字母

  • [a-Z]:小或大写字母

  • [0-9]:数字

  • [a-zA-Z0-9]:表示匹配一个为字母或数字的字符

  • . :匹配1个任意字符,空格除外 

  • [0-f]:16进制数

  • abc | def:abc或def

  • a (bc | de) f:abcf 或 adef

  • \

  • \>:单词尾

  • [^表达式]:除小写字母以外的所有字符,如此类推。

2、后跟以下符号控制匹配的数量

此类符号的左侧要有上面第一点的表达式

  • 表达式*:0或n个字符

  • 表达式+:1或n个字符

  • 表达式?:0或1个字符

  • 表达式{n}:n个字符

  • 表达式{n:m}:n到m个字符

  • 表达式{n,}:至少n个字符

【例】[a-z]*表示匹配0个或多个小写字母

3、将匹配的字符控制在头尾

  • ^表达式:头部符合

  • 表达式$:尾部符合

 

二、Linux三大文本处理工具

1、egrep 筛选工具

grep的扩展版,可以使用正则表达式

语法:

egrep -选项  '正则表达式'  文件名

选项:

  • -n :显示行号

  • -o :只显示匹配的内容

  • -q :静默模式,没有任何输出,得用$?来判断执行成功没有,即有没有过滤到想要的内容

  • -l :如果匹配成功,则只将文件名打印出来,失败则不打印,通常-rl一起用,grep -rl 'root' /etc

  • -A :如果匹配成功,则将匹配行及其后n行一起打印出来

  • -B :如果匹配成功,则将匹配行及其前n行一起打印出来

  • -C :如果匹配成功,则将匹配行及其前后n行一起打印出来

  • --color

  • -c :如果匹配成功,则将匹配到的行数打印出来

  • -i :忽略大小写

  • -v :取反,不匹配

  • -w:匹配单词

2、sed 流编辑器

语法:

语法1:sed  -选项  '数字定位+命令'  文件名

选项:

  • -n:静默模式,不输出

  • -e:多项编辑,这个不是很清楚

  • -i:直接修改文件内容,而不是输出

  • -r:扩展模式,可使用正则表达式

  • -f:指定文件名,将动作写在新的文件内

定位:

①数字定位(输入行序号定位)

  • 1:单行 

  • 1,3:范围 从第一行到第三行

  • 2,+4:匹配行后若干行

  • 4,~3:从第四行到下一个3的倍数行

  • 2~3:第二行起每间隔三行的行

  • $:尾行

  • 1!:除了第一行以外的行

【例】sed -n '1p' /etc/passwd

②正则表达式定位

jquery正则表单验证
jquery正则表单验证

jquery正则表单验证

下载
  • 正则必须用//包裹起来

  • 扩展正则需要用 -r 参数或转义

  • 替换可使用正则表达式的子模式,即小括号(),可以\1、\2代表子模式

【例】sed -r 's/(.)(.)/\2\1/ file1 表示将匹配到的第一部分和第二部分替换

*贪婪选项:填上g,代表把一行中所有匹配项替换

命令:

  • a ∶ 追加append, 

  • c ∶ 改变change, 

  • d ∶ 删除delete,

  • i ∶ 插入insert, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行)

  • p∶ 列印print

  • s∶ 取代substitute,可以直接进行替换的工作。通常这个 s 的动作可以搭配正则表达式。例如 1,20s/old/new/g

*s命令特别说明:

使用{命令1:命令2:命令3}可增加使用多个命令

s命令语法:sed  -r  '替换命令s/正则表达式/替换内容/贪婪选项g'  文件名

3、awk 文本分析工具

由命令、正则(需要用//包围起来)、比较和关系运算组合而成

使用option中的-F参数定义间隔符号

用$1,$2,$3等的顺序表示files中每行以间隔符号分隔的各列不同域,NF变量表示当前记录的字段数

语法

awk -选项 参数  '逻辑判断{命令 变量1,变量2,变量3}' 文件名

选项

  • -F 定义字段分隔符,默认的分隔符是连续的空格或制表符

  • -v 定义变量并赋值 也可以借用次方式从shell变量中引入

AWK变量

  • NR 当前记录的个数(全部文件连接后的统计)

  • FNR 当前记录的个数(仅为当前文件的统计,非全部)

  • FS 字段分隔符 默认为连续空格或制表符,可以使用多个不同的符号做分隔符 -F[:/]

  • OFS 输出字符的分隔符 默认是空格

【OFS例】

# awk -F: 'OFS="=====" {print $1,$2}' /etc/passwd
root=====x

  • NF 当前读入行的字段个数

  • ORS 输出记录分隔符 默认是换行

【ORS例】

# awk -F: 'ORS="=====" {print $1,$2}' /etc/passwd
root x=====bin x=====

  • FILENAME 当前文件名

【例1】使用AWK变量
# awk '{print NR,FNR,$1}' file1 file2 
1 1 aaaaa
2 2 bbbbb
3 3 ccccc
4 1 dddddd
5 2 eeeeee
6 3 ffffff
# 

【例2】引用shell变量的方法

# a=root
# awk -v var=$a -F: '$1 == var {print $0}' /etc/passwd
或者 把整个命令拆开传递,让shell变量外露,
# awk -F: '$1 == "'$a'" {print $0}' /etc/passwd
# a=NF
# awk -F: '{print $'$a'}' /etc/passwd

 

逻辑运算(可直接引用域进行运算)

  • = += -= /= *=:赋值

  • && || !:逻辑与 逻辑或 逻辑非

  • ~ !~:匹配正则或不匹配,正则需要用 /正则/ 包围住

  • >= != ==:关系,比较字符串时要把字符串用双引号引起来

  • $:字段引用需要加$,而变量引用直接用变量名取

  • + - * / % ++ --:运算符

转义序列

  • \\ \自身

  • \$ 转义$

  • \t 制表符

  • \b 退格符

  • \r 回车符

  • \n 换行符

  • \c 取消换行

  

有错误请指正,更多详细资料参考:

相关专题

更多
Java编译相关教程合集
Java编译相关教程合集

本专题整合了Java编译相关教程,阅读专题下面的文章了解更多详细内容。

9

2026.01.21

C++多线程相关合集
C++多线程相关合集

本专题整合了C++多线程相关教程,阅读专题下面的的文章了解更多详细内容。

3

2026.01.21

无人机驾驶证报考 uom民用无人机综合管理平台官网
无人机驾驶证报考 uom民用无人机综合管理平台官网

无人机驾驶证(CAAC执照)报考需年满16周岁,初中以上学历,身体健康(矫正视力1.0以上,无严重疾病),且无犯罪记录。个人需通过民航局授权的训练机构报名,经理论(法规、原理)、模拟飞行、实操(GPS/姿态模式)及地面站训练后考试合格,通常15-25天拿证。

16

2026.01.21

Python多线程合集
Python多线程合集

本专题整合了Python多线程相关教程,阅读专题下面的文章了解更多详细内容。

1

2026.01.21

java多线程相关教程合集
java多线程相关教程合集

本专题整合了java多线程相关教程,阅读专题下面的文章了解更多详细内容。

3

2026.01.21

windows激活码分享 windows一键激活教程指南
windows激活码分享 windows一键激活教程指南

Windows 10/11一键激活可以通过PowerShell脚本或KMS工具实现永久或长期激活。最推荐的简便方法是打开PowerShell(管理员),运行 irm https://get.activated.win | iex 脚本,按提示选择数字激活(选项1)。其他方法包括使用HEU KMS Activator工具进行智能激活。

2

2026.01.21

excel表格操作技巧大全 表格制作excel教程
excel表格操作技巧大全 表格制作excel教程

Excel表格操作的核心技巧在于 熟练使用快捷键、数据处理函数及视图工具,如Ctrl+C/V(复制粘贴)、Alt+=(自动求和)、条件格式、数据验证及数据透视表。掌握这些可大幅提升数据分析与办公效率,实现快速录入、查找、筛选和汇总。

6

2026.01.21

毒蘑菇显卡测试网站入口 毒蘑菇测试官网volumeshader_bm
毒蘑菇显卡测试网站入口 毒蘑菇测试官网volumeshader_bm

毒蘑菇VOLUMESHADER_BM测试网站网址为https://toolwa.com/vsbm/,该平台基于WebGL技术通过渲染高复杂度三维分形图形评估设备图形处理能力,用户可通过拖动彩色物体观察画面流畅度判断GPU与CPU协同性能;测试兼容多种设备,但中低端手机易卡顿或崩溃,高端机型可能因发热降频影响表现,桌面端需启用独立显卡并使用支持WebGL的主流浏览器以确保准确结果

19

2026.01.21

github中文官网入口 github中文版官网网页进入
github中文官网入口 github中文版官网网页进入

github中文官网入口https://docs.github.com/zh/get-started,GitHub 是一种基于云的平台,可在其中存储、共享并与他人一起编写代码。 通过将代码存储在GitHub 上的“存储库”中,你可以: “展示或共享”你的工作。 持续“跟踪和管理”对代码的更改。

7

2026.01.21

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 7.5万人学习

Git 教程
Git 教程

共21课时 | 2.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号