第 十 三 天 : 正 则 表 达 式 的 工 具

小Q:无论世界是否待你温柔,请保持你的善良,因为好运会与你不期而遇,

善良的心灵运气不会差。

今天学习的是正则表达式使用的四种工具,因为昨天已经看了两种了,所以今天

比较早的就看完了;但是这一章节不多动动脑子是真的会被他搞晕的,仔细去想,把自己想成一种特殊字符,深入理解,其实也没什么难得,只不过这种类型要多练

才能把他巩固。写完之后,晚上我要大幅度的做题了。

grep 工具:

格式:   grep      选项      ‘匹配符’     文件
                选项:  --color   显示匹配符的颜色          -n  显示行号

-c         只显示出现几行              -v    取反,输出不含匹配符的行

-A2      输出匹配符行,并附加旗下两行
                                -B3      输出匹配符行,并附加其上三行
                                -C3      输出匹配字符行,并附加上下个三行
                                 -r         检索目录下的包含匹配符的行 ,可-rh 不要前边路径文件

***      匹配符:  【】     范围,表示其中任意一个就行

^【】      以里边任意一个字符开头即可
                               【^ 】    除里边字符以外的都行

^$        ^是开头,$是结尾,表示空行
                                    .         任意一个字符

*         0个或多个 * 之前的字符
                                   .*         0个多个任意字符,all                              
                  举例:  ‘r.*o’       0个或多个任意字符,但必须以 r 开头, o 结尾
                                 ‘r*o’       可匹配 o / ro /rro /rrro/ 等rrro

‘r.o’       只能首字母是r 尾字母是o ,中间随意的组合

‘【^0-9】’   匹配除了数字以外的所有字符

特殊匹配符:

\?=-E  ?        0个或一个?前的字符                       \      脱义符
                                     +               1个或多个 + 之前的字符
                                 ( )            组合,里边的东西是一个整体
                                 {1,3}         1 到 3 次
                                     |                 表示或                            与用管道符叠加

举例:

‘r\?o’= -E  ‘r?o’   可匹配o/oo/ooo等/ro/roo/roo等,不能匹配 rr 两个连续的

‘(rr){1,3}’     rr 一起可以出现1到3次 ,但必须是偶数个r

‘a+b’                可匹配 ab /aab/ aab/ aaaab`````1个或多个a 加b
                                                  要注意,他有可能连着出现 1次有连续出现 3次

特殊符号使用时要加脱义符,或者用选项 -E 来代替,或者用egrep去过滤;

egrep 工具:

前面也说过,grep  -E  =  egrep  是相等;

简单地说 egrep 是 grep 的扩展或者升级版吧,egrep可以用的 grep 都可以

用,只是要加上-E ,grep 能用的,egrep 都能用,格式也一样。

sed  工具:

功能多,比grep多删除,替换等的功能;但是没有颜色显示。

打印:    sed  ‘1,8‘p   1.txt       打印 1到 10行,p是打印,但他显示的是全部
                                                                     然后1到10复制了一遍                      加  - d
                   删除:     sed   ‘1,7’d   1.txt      删除1到7行,但他不会真的删除文件中的内                                                                       容,只是显示在屏幕上                  真删 - i
                   过滤:     sed   -r    ‘/ 匹配符/’    1.txt                                 - r 代替了脱义符

替换:     sed   ‘1,10s/old/new/g’   1.txt

有时替换的词中包含特殊字符,此时要转换一种方式,如:

sed   ‘1,10s//\new/g’  1.txt    =    sed    ‘1,10s#old#new#g’   1.txt

任意字符开头   : ^ . &                     一整行 :   ^ . * $
                                 将new 加在末尾: &new                   打印包含a或b的行: ‘/ a|b /’
                                 分号类似  |,不过他会打印好多相同的行,如:‘/a/p ; /b/p’

举例: sed      ‘s#[a-zA-Z]##g’    1.txt            删除字母

sed     ‘s#^.*$#new#g’      1.txt             new替换每一行
                                 sed      -r ‘s/^.$/new/g’      1.txt            new替换首字母

题:

passwd文档中,以冒号分隔,替换首尾段
                                  sed     ‘s#(^[a-zA-Z0-9]+)(:.*:)(.*$)#\3\2\1#g’      1.txt

其实重点在分段,首 中 尾
                                  =sed   -r ‘s/([^:]+)(:. *:)([^:]+)/ \3\2\1 /g’    1.txt

awk 工具

可以分段 匹配 和打印;不用进行脱义就可用特殊符号;不支持 {}

格式: awk     -F‘分隔符’   ‘OFS="分隔符"   {print $3,$4}’     1.txt
                                 -F‘分隔符’    :      以文件中分隔符分段

OFS="分隔符":    打印的内容用分隔符隔开

匹配: ‘/user | root/’      ‘/r*o/’     ‘[aN]’   ‘/r+o/’       ‘/^[a-z]/’
                  格式:  awk    -F‘:’    ‘匹配’       文件

格式:awk  -F ‘:’  ‘$1~/r*o/  {print $1,$3} ; $1~/nolog/  {print $1,$3}’  1.txt
                              awk   -F ‘:’    ‘$1~/r*o | nolog/   {print $1,$3}’      1.txt
                             $数字~:固定格式,查询第几段

;和 | 的用法和sed一样,;显示重复行
                 意思:以:分段,找到包含 r*o 或 nolog的行,然后打印出第 1和第 3行。

awk 的符号:
                   ==   >=     <=    !=   <     >        ‘{if (条件 )  结果 }’有时条件后要加;隔开
                 内置变量:
                                      NR表示行                  ‘NR<10’ 输出前十行

‘print  $NR’第一行打印$1,第二行打印$2·····

NF 每行里的段             ‘NF<10’ 输出前十段

‘print  $NF’有7段打印$7,八段就打印$8
                                      ‘NF‘    输出每一行有几段

‘{ if (NF=7)  print $3 }’哪一行有7段,就打印哪一行的$3

帮助文档中单词:

matching      匹配                         version         版本                             generic          通用的

synopsis       大纲                          pattern         模式                             comparing     比较

aviod            避免                          duplicate      重复的                         omit              省略

report           报告                          delimiter      分隔符                          contians        中突出

fields            字段                          field             领域                              instead          而不是

section          部分                          standard       标准                             execute          执行

练习题:

时间: 2024-10-05 15:06:36

第 十 三 天 : 正 则 表 达 式 的 工 具的相关文章

JAVA学习第六十五课 — 正則表達式

正則表達式:主要应用于操作字符串.通过一些特定的符号来体现 举例: QQ号的校验 6~9位.0不得开头.必须是数字 String类中有matches方法 matches(String regex) 告知此字符串是否匹配给定的正則表達式. regex,就是给定的正則表達式 public static void checkQQ() { //第一位是数字1-9,第二位以后是0-9,除去第一位数剩下数字位数范围是5到8位 String regex = "[1-9][0-9]{5,8}";//正

DOM笔记(十):JavaScript正則表達式

一.RegExp ECMAScript通过RegExp类型类支持正則表達式,语法和Perl类似: var exp = /pattern/flags; patternb部分是不论什么简单的或复杂的正則表達式:flags是每一个正則表達式所带的一个或者多个标志. 正則表達式的模式匹配支持三个标志: g:全局模式,即模式应用于整个字符串.而非在发现第一个匹配项时马上停止 i:不区分大写和小写模式 m:多行模式,即到达一行文本末尾是还会继续茶查找下一行中是否存在与模式匹配的项. 1.创建正則表達式 Ja

JavaScript正則表達式知识汇总

Js 正則表達式知识汇总 正則表達式: 1.什么是RegExp?RegExp是正則表達式的缩写.RegExp 对象用于规定在文本中检索的内容. 2.定义RegExp:var +变量名=new RegExp(); 3.RegExp 对象有 3 个方法: 1)test()检索字符串中的指定值,返回值是true或false. var p1=new Reg("e"); document.write(Reg.test("welcome to China!")); 2)exec

python进阶十_正則表達式(一)

近期状态一直不太好,至于原因.怎么说呢,不好说,总之就是纠结中覆盖着纠结.心思全然不在点上.希望能够借助Python的学习以及博客的撰写来调整回来,有的时候回头想一想.假设真的是我自己的问题呢,曾经我常常跟别人说,千万不要怀疑自己.由于非常清楚一旦连自己都变的不可信.那这个世界就太疯狂了,当一遍一遍的问我,如今连我自己都快怀疑自己了,我一遍一遍的说服别人,想不到如今居然须要自己去说服自己,何其的悲哀~ 一.正則表達式基础 1.基本概念 正則表達式是计算机科学的一个概念.正則表達式使用单个字符串来

正則表達式常见例题

常见例题 例1:北美地区的电话号 编码方案:电话号码有一个3位数的区号和一位7位数的号码组成(这个7位数有分成  一个3位的局号和一个4位的路号.局号和路号之间使用连字符分隔) 每位电话号码能够是随意数字,可是区号和局号的第一位数字不能是0或1.实际书写号码是往往会把区号写在括号中面,或者将区号使用连字符和后面的局号连接起来.比如:(555)123-1234或555-123-1234,有时候在括号你里面会包括空格.比如:(555 )123-1234 文本: J.Doe:248-555-1234

三个月-见识菜鸟的每天的成长(js正則表達式&amp;amp;&amp;amp;phpmail的收发)

今天写了一段JS验证.就是涉及一个数据的合法性验证. 就是核心就是正則表達式.其它都是细节的东西,可是细节的东西非常重要. 今天犯了一个特么2B的错误,在js的function函数里面,alert字符的时候.用的双引號.导致程序跑步起来出错. 整整困扰了自己一个上午.才发现原来是这个小细节没有注意.总而言之.还是自己实力不济.得提高. 以下普及一下正則表達式跟JS基本的语法规则. 首先正則表達式,依据2/8定理,百分之二十的表达式是在百分之八十中用到的,其它的不用管. 略微了解一下即可. 最重要

HDU-1039-Easier Done Than Said?(Java &amp;amp;&amp;amp; 没用正則表達式是我的遗憾.....)

Easier Done Than Said? Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 9845    Accepted Submission(s): 4784 Problem Description Password security is a tricky thing. Users prefer simple password

正則表達式

一.概述 正則表達式是一种能够用于模式匹配和替换的强有力的工具.其作用例如以下: (1)測试字符串的某个模式.比如,能够对一个输入字符串进行測试,看在该字符串是否存在一个电话号码模式或一个信用卡号码模式.这称为数据有效性验证. (2)替换文本.能够在文档中使用一个正則表達式来标识特定文字,然后能够所有将其删除,或者替换为别的文字: (3)依据模式匹配从字符串中提取一个子字符串. 能够用来在文本或输入字段中查找特定文字. 二.匹配字符 字符 解释说明 \ 将下一字符标记为特殊字符.文本.反向引用或

js正則表達式语法

1. 正則表達式规则 1.1 普通字符 字母.数字.汉字.下划线.以及后边章节中没有特殊定义的标点符号,都是"普通字符".表达式中的普通字符,在匹配一个字符串的时候,匹配与之同样的一个字符. 举例1:表达式 "c",在匹配字符串 "abcde" 时,匹配结果是:成功:匹配到的内容是:"c":匹配到的位置是:開始于2,结束于3.(注:下标从0開始还是从1開始,因当前编程语言的不同而可能不同) 举例2:表达式 "bcd&