加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

正则表达式 基础

发布时间:2020-12-13 19:36:30 所属栏目:百科 来源:网络整理
导读:正则表示法:处理字符串的方法,是以行为单位来进行字符串的处理行为,透过一些特殊符号的辅助,可以让使用者轻易的达到『搜寻/删除/替代』某特定字符串的处理程序! 正则表示法的字符串表示:基础正则表示法和延伸正则表示法 通配符 (wildcard) 代表?是 bas

正则表示法:处理字符串的方法,是以行为单位来进行字符串的处理行为,透过一些特殊符号的辅助,可以让使用者轻易的达到『搜寻/删除/替代』某特定字符串的处理程序!



正则表示法的字符串表示:基础正则表示法和延伸正则表示法



通配符 (wildcard) 代表?是 bash 操作接口的一个功能』,但正则表示法则是一种字符串处理的表示方式。



grep [-A] [-B] [--color=auto] '搜寻字符串' filename

-A :后面可加数字,为 after 的意思,除了列出该行外,后续的 n 行也列出;

-B :后面可加数字,为 befer ?意思,除了列出该行外,前面的 n 行也列出;

--color=auto 可将正确?那个数据列出颜色

-n :number,列出行号



~/.bashrc 内加上这行『alias grep='grep --color=auto'』再以『 source ~/.bashrc 』来立即生效?可,这样每次执行 grep 他都会自动加上颜色。



语系使用『 export LANG=C 』的设定值;



例题一、搜寻特定字符串

grep -n 'the' regular_express.txt

grep -vn 'the' regular_express.txt 反向选择

grep -in 'the' regular_express.txt不论大小写


例题二、利用中括号 [] 搜寻集合字符

grep -n 't[ae]st' regular_express.txt

grep -n '[^g]oo' regular_express.txt

oo 前面不想要有小写字符,可以这样写[^abcd....z]oo , 但是这样似乎不怎么方便,由于小写字符的 ASCII 上编码的顺序是连续的,因此简化为底下这样

grep -n '[^a-z]oo' regular_express.txt


例题三、行首与行尾字符 ^ $

grep -n '^[^a-zA-Z]' regular_express.txt

^ 符号,在字符集合符号(括号[])内与外是不同的! 在 [] 内代表『反向选择』,在 [] 外则代表定位在行首的意义!

grep -n '.$' regular_express.txt要找出行尾结束为小数点 (.) 那一行

跳脱字符()来加以解除其特殊意义


(^$),这样就可以找出空白行



例题四、任意一个字符 . 不重复字符 *

. (小数点):代表『一定有一个任意字符』

* (星星号):代表『重复前一个 0 到无穷多次』为组合形态


至少两个 o 以上的字符串时,就需要 ooo*



例题五、限定连续 RE 字符范围 {}

找出两个到五个 o 的连续字符串,要使用到限定范中的字符 {} 了。 但因为 { 和 } ?符号在shell 是有特殊意义,要使用跳脱字符 失去特殊意义才


grep -n 'go{2,5}g' regular_express.txt

找出 g 后面接 2 到 5 个 o ,然后再接一个 g 的字符串


2 个 o 以上的 goooo....g

grep -n 'go{2,}g' regular_express.txt


『正则表示法的特殊字符』与一般在指令列输入指令的『通配符』并不相同, 例如,在通配符当中? * 代表的是『 0 ~ 无限多个字符』的意思,但是在正则表示法当中, * 则是『重复 0 到无穷多个的前一个 RE 字符』


**************************************

sed工具

sed 本身也是一个管线命令,将数据进行取代、删除、新增、截取特定行等等的功能

sed [-nefr] [动作]

-n :使用安静(silent)模式。只有经过sed 特殊处理的那一行(或者动作)才会被列出来。

-e :直接在指令列模式上进行 sed ?动作编辑;

-f :直接将 sed 的动作写在一个档案内, -f filename 则可以执行 filename 内的sed 动作;

-r :sed 的动作支持的是延伸型正则表示法的语法。

-i :直接修改读取?档案内容,而不是由屏幕输出。


动作说明: [n1,[n2]]function

n1,n2 :不见得会存在,一般代表『选择进行动作的行数』,举例来说,如果我的动作是需要在 10 到 20 行间进行的,则『 10,20[动作行为] 』


function 有底下这些:

a :新增,a 的后面可以接字符串,而这些字符串会在新一行出现(目前的下一行)~

c :取代,c ?后面可以接字符串,这些字符串可以取代 n1,n2 间的行!

d :删除,因为是删除啊,所以 d 后面通常不接任何;

i:插入,i后面可以接字符串,而这些字符串会在新?一行出现(目前?上一行);

p:打印,亦?将某个选择?数据印出。通常 p 会不参数 sed -n 一起运作~

s :取代,可以直接进行取代?工作哩!通常这个 s ?动作可以搭配正则表示法!1,20s/old/new/g 就是啦!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读