首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

正则表达式“派别”简述

相信大家对于正则表达式都不陌生,在文本处理或多或少的都会使用到它。...但是,我们在使用linux下的文本处理工具awk、sed等时,正则表达式的语法貌似还不一样,在awk能正常工作的正则,在sed总是不起作用,这是为什么呢?...ed所支持的正则表示式并不比qed的高级,但是ed是第一个在非技术圈广泛传播的工具,ed有一个命令可以展示文本符合给定正则表达式的行,这个命令是g/Regular Expression/p,在英文中读作...答案是否定的,因为我们现在使用的linux发行版,都是集成GNU套件的,GNU是Gnu’s Not Unix的缩写,GNU在实现了POXIS标准的同时,做了一定的扩展,所以上面空白栏的功能也能使用。...t\r\n\f] \d 表示[1-9] \D 表示[^1-9] \< 表示一个单词的起始 \> 表示一个单词的结尾 关于shorthand在两种标准的比较,更多可参考Wikipedia 总结 我相信大家最初接触正则表达式

48910

网友来稿:何为正则?一正则天下,一文带你看尽精华。

ls * 通配符 但现在学的是Linux正则表达式,最常应用正则表达式的命令是 grep(egrep),sed,awk。...expression) BRE和ERE的区别仅仅是元字符的不同: BRE(基础正则表达式)只承认的元字符有^$.[]*其他字符识别为普通字符:() ERE (扩展正则表达式)则添加了(){}?...+|等 只有在用反斜杠“\”进行转义的情况下,字符(){}才会在BRE被当作元字符处理,而ERE ,任何元符号前面加上反斜杠反而会使其被当作普通字符来处理。...代表且只能代表任意一个字符(不匹配空行) \ 转义字符,让有特殊含义的字符脱掉马甲,现出原形,.只表示小数点 重复之前的字符或文本0个或多个,之前的文本或字符连续0次或多次...: 任何一个可以打印的字符 [:print:] 元字符 正则表达式 描述 示例 \b 单词边界 \bcool\b匹配cool,不匹配coolant \B 非单词边界 cool

59400
您找到你想要的搜索结果了吗?
是的
没有找到

第二十章 : 正则表达式

我妻子喜欢玩字谜游戏,有时候她会因为一个特殊的问题,而向我求助。类似这样的问题,“一个有五个字母的单词,它的第三个字母是‘j’,最后一个字母是‘r’,是哪个单词?”这类问题会让我动脑筋想想。...存储在此目录下的字典文件,其内容仅仅是一个长长的单词列表,每行一个单词,按照字母顺序排列。在我的系统,这个文件仅包含98,000个单词。...使用这个正则表达式,我们能在我们的字典文件查找到包含五个字母,且第三个字母是“j”,最后一个字母是“r”的所有单词。...一个否定的字符集仍然在给定位置要求一个字符,但是这个字符必须不是否定字符集的成员。...插入字符如果是括号表达式的第一个字符的时候,才会唤醒否定功能;否则,它会失去它的特殊含义,变成字符集中的一个普通字符。

35210

grep 正则语法速查 + 典型案例

正则表达式里有特殊含义,它匹配一个任意字符,所以 .ssh .bashrc 文件也匹配到了。正则表达式是使用 grep 的基础,它有不同规范,下面将介绍 Linux 中常见的 ERE 和 BRE。...\+ \| \{ \} \( \)BRE 前者表示字面量,后者具有特殊含义。而 ERE 则相反,前者具有特殊含义,后者表示字面量。...POSIX ERE 规范并不支持这些特殊符号,它们属于 GNU grep 的扩展。字符集合字符集合匹配一个属于集合的字符。字符集合描述表达式样例.匹配一个任意字符,包括换行符。...[ list ]匹配一个在列表的字符。[RrB]ose 匹配 "Rose" "rose" "Bose"[^ list ]匹配一个不在列表的字符。...锚点锚点匹配一个定位。锚点描述表达式样例^匹配一行开头$匹配一行结尾\b匹配单词边缘。

2.2K21

Linux正则表达式

,这些特殊字符不表示字符字面意义,而是表示控制或者通配的功能 正则表达式的类型 正则表达式又分为两类,基本正则表达式(BRE)和扩展正则表达式ERE) * BRE:grep默认情况下是支持基本正则表达式的...* ERE:egrep是用来支持扩展正则表达式,grep的-E选项也可以用来支持扩展正则表达式 fgrep表示不支持正则表达式。...):表示这个pattern当做一个整体来看待,例如:grep '(root)+' /etc/passwd,匹配passwd文件中含有root字符串至少一次的行 **这里的分组和上面的单词锚定有本质的区别...**分组括号的模式所匹配到的内容会被正则表达式引擎记录于内部的变量,这些变量在grep中被命名为:\1,\2,\3...,在其他语言中可能会不一样。...扩展正则表达式元字符ERE ERE的元字符 ERE的元字符兼容BRE的元字符,不过BRE需要使用\来转义的元字符,在ERE可以不用\了 undefined 1.字符匹配 undefined

1.9K60

linux awk 运算符

示例2 字符串比较,起始字符“1”在“9“之前,因此小于“9”,结果为“no”。...正则表达式其实就只有3种类型,详细可以参考:linux shell 正则表达式(BREs,EREs,PREs)差异比较 1) 正则式语法 字符功能+指定一个或多个字符,或扩展正则表达式的具体值(在 +...示例的输出是:smithern, harry smithhern, anne?指定如果零个或一个字符或扩展正则表达式的具体值(在 ?(问号)之前)在字符串,则字符串匹配。...当位于在扩展正则表达式具有特殊含义的任何字符之前时,转义字符除去该字符的任何特殊含义。例如, 命令行:/a\/\// 将与模式 a // 匹配,因为反斜杠否定斜杠作为正则表达式定界符的通常含义。...# ~ 正则匹配符,表示是否满足正则匹配 结果: ok b、 正则函数 gsub( Ere, Repl, [ In ] ) sub( Ere, Repl, [ In ] ) match( String,

2.7K20

刨根究底正则表达式之一——正则表达式简介

也就是说,一个正则表达式代表了某类字符串的一个集合,而正则表达式相当于对该字符串集合的特征性质描述。(注:集合的常用表示方法有元素列举法、特征性质描述法和图示法。)...自此,正则表达式被广泛应用到各种Unix系统或类Unix系统(Mac系统、Linux系统)的工具。 由于正则表达式异常强大而实用的功能,越来越多的语言和工具引入了正则表达式。...POSIX是一系列规范,定义了Unix操作系统应当支持的功能,其中也包括正则表达式的规范。 因此,Unix系统或类Unix系统上的大部分工具,grep、sed、awk等,均遵循该标准。...不过,后来随着BRE与ERE逐渐相互融合,现在的BRE和ERE(包括GNU改进的GNU BRE和GNU ERE)在功能特性上并没有太大区别,主要的差异是在元字符的转义上。...注3:PCRE中常用\b来表示“单词的起始或结束位置”,但Linux/Unix的工具,通常用\来匹配“单词的结束位置”,而sed的\y则与PCRE的\b一样,可同时匹配这两个位置

1.1K40

AWK常用技巧

awk 是一种很棒的语言,它适合文本处理和报表生成,其语法较为常见,借鉴了某些语言的一些精华, C 语言等。...sub( Ere, Repl, [ In ] ) 用 Repl 参数指定的字符串替换 In 参数指定的字符串的由 Ere参数指定的扩展正则表达式的第一个具体值。sub 函数返回替换的数量。...出现在 Repl 参数指定的字符串的 &(和符号)由 In 参数指定的与 Ere 参数的指定的扩展正则表达式匹配的字符串替换。如果未指定 In 参数,缺省值是整个记录($0 记录变量)。...match( String, Ere ) 在 String  参数指定的字符串(Ere  参数指定的扩展正则表达式出现在其中)返回位置(字符形式),从 1  开始编号,或如果 Ere  参数不出现...此分隔可以通过 Ere  参数指定的扩展正则表达式进行,或用当前字段分隔符(FS 特殊变量)来进行(如果没有给出 Ere参数)。

96840

linux基础(三)

-E 使用ERE 扩展正则表达式 -F 相当于fgrep。...分类: 基本正则表达式BRE 扩展正则表达式ERE grep -E , egrep 引擎:采用不同算法,检查处理正则表达式的软件模块 元字符:字符匹配、匹配次数、位置锚定、分组 看帮助:man 7...(单词边界,除了字母、下划线、数字) \> 或 /b 词尾锚定,用于单词模式右侧 \ 匹配整个单词 \(\) 分组,将一个或多个字符捆绑在一起,当做一个整体处理 echo godgodgod grep...-o "\(god\)\" 重复god2次 \1 表示从左侧起第一个左括号以及与之匹配右括号之间的模式所匹配的字符 \2 ......反向引用:应用前面的分组括号的模式所匹配的字符,而非字符本身 或者\ ab : a或b Ccat : C或cat (Cc)at :Cat或cat 2、扩展正则表达式 egrep = grep -E 次数匹配

1.5K70

grep命令及正则表达式

基本正则表达式:BRE 扩展正则表达式ERE grep -E = egrep grep语法 grep [OPTIONS] PATTERN [FILE…] OPTIONS:...; \> 或 \b:词尾锚定,用于单词模式的右侧; \:匹配完整单词单词:非特殊字符组成的连续字符(字符串)都称为单词; 分组及引用 \(\):将一个或多个字符捆绑在一起,当作一个整体进行处理...; \(xy\)*ab Note:分组括号的模式匹配 到的内容会被正则表达式引擎自动记录于内部的变量,这些变量为: \1:模式从左侧起,第一个左括号以及与之匹配的右括号之间的模式所匹配到的字符...~]# grep "\(l..e\).*\1" lovers.txt 后向引用:引用前面的分组括号的模式所匹配到的字符; 扩展正则表达式的元字符 字符匹配: ....{0,n} {m,} 位置锚定 ^:行首锚定; $:行尾锚定; \<, \b:词首锚定; \>, \b:词尾锚定; 分组及引用: ():分组;括号内的模式匹配到的字符会被记录于正则表达式引擎的内部变量

1.7K70

awk 简明教程

命令选项 awk 命令选项 选项 意义 -F fs or —field-separator fs 指定输入文件折分隔符,fs是一个字符串或者是一个正则表达式-F: -v var=value...sub( Ere, Repl, [ In ] ) 用 Repl 参数指定的字符串替换 In 参数指定的字符串的由 Ere 参数指定的扩展正则表达式的第一个具体值。sub 函数返回替换的数量。...出现在 Repl 参数指定的字符串的 &(和符号)由 In 参数指定的与 Ere 参数的指定的扩展正则表达式匹配的字符串替换。如果未指定 In 参数,缺省值是整个记录($0 记录变量)。...match( String, Ere ) 在 String 参数指定的字符串(Ere 参数指定的扩展正则表达式出现在其中)返回位置(字符形式),从 1 开始编号,或如果 Ere 参数不出现,则返回 0...表中所有的 Ere 都可以是正则表达式。 12.3.

1.2K20

Linux系统开发: linux下正则表达式

现在学的是Linux正则表达式,最常应用正则表达式的命令是linux三剑客:grep(egrep),sed,awk。...匹配除换行符\n之外的任意单个字符,awk则可以 a.b则表示匹配除换行符之外的任意单个字符,例:aab,abb [] [] [] 匹配包含在[字符]之中的任意一个字符,可用[a-z],[0-9],[...此表达式实测有出入) 不支持 | | 交替匹配|两边的任意一项,有时需用到转义字符 ab\(c\|d\),可匹配abc或abd 只有在用反斜杠\进行转义的情况下,字符(),{}才会在BRE被当作元字符处理,而ERE...所以ERE中直接使用(),{},而BRE则\(\) ,\{\} grep调用-E参数指定使用扩展正则表达式。 sed调用-r参数指定使用扩展正则表达式。 或者直接使用egrep。...BREs EREs PREs 描述 \b \b \b 单词边界 \B \B \B 非单词边界 \w \w \w 单个单词字符(字母、数字、_) \W \W \W 单个非单词字符 不支持 不支持 \d 单个数字字符

1.4K10

正则表达式笔记

单词边界 环视 假设让你在一个文件查找一下 u 后面不是 x 的单词,怎么办?...:我想匹配点号,可是在正则表达式,点号代表任意单个字符,这时候我们只需要在点号的前面加反斜杠就 OK 了,如下: \. 我们把这种形式称为转义。我们可以在任何元字符的前面加上反斜杠来匹配它自己。...在正则表达式括号有个神奇的功能,它能够记住它包含的子表达式匹配的文本,\1表示第一个括号的内容, \2表示第二个括号的内容。我们把这种神奇的功能称为后向引用(backreference)。...^”[^”]*” 使用技巧 去除首尾空白字符 在对文件进行操作的时候,我们经常需要去除文件每一行的首尾空白字符,使用正则表达式,这是一个非常轻松的活 ^\s+|\s+$ 去掉文件名的路径 如何把一个文件名的路径去掉呢...有些人觉得非常简单,用下面的正则表达式: \d?\d:\d\d [ap]m 这个正则表达式确实可以匹配上面的时刻,但它也可以匹配 66:77 am 这样的无意义的时刻。

98120

文本处理三剑客之grep

正则表达式分为两类 基本正则表达式BRE 扩展正则表达式ERE 2、基本正则表达式 1、元字符 ....:非特殊字符组成的连续字符(字符串)都称为单词;包含数字 < 或 \b:词首锚定,用于单词模式的左侧;<root,只能锚定root开头的单词 > 或 \b:词尾锚定,用于单词模式的右侧;root>,...只智能锚定root结尾的单词 :匹配完整单词,精确锚定单词为root 4、分组 分组就是把一个或多个字符捆绑在一起,当做一个整体进行处理,例如\(\) 案例 \(xy\...)*ab:表示xy这个整体可以出现任意次 注意 分组括号的模式匹配 到的内容会被正则表达式引擎自动记录于内部的变量,这些变量的命名为\1,\2...: \1:模式从左侧起,第一个左括号以及与之匹配的右括号之间的模式所匹配到的字符...centos或user1用户的相关信息 ~]# grep -E "^(root|centos|user1)\>" /etc/passwd 案例三、找出/etc/rc.d/init.d/functions文件单词后面跟一个小括号的行

36820

正则表达式

正则表达式的第一个实用应用程序就是 Unix 的 qed 编辑器。 他们所说,剩下的就是众所周知的历史了。从那时起直至现在正则表达式都是基于文本的编辑器和搜索工具一个重要部分。...正则表达式在Linux的分类 在正则表达式的语法,主要有两个部分修饰符和元字符。 修饰符,我们在后面介绍,它主要不写在正则,要写在正则的外面。...等价于 \x0b 和 \cK \f 换页符 等价于 \x0c 和 \cL \b 匹配一个单词边界,也就是指单词和空格间的位置 'er\b' 可以匹配"never" 的 'er',但不能匹配 "verb..." 的 'er' \B 匹配非单词边界 er\B' 能匹配 "verb" 的 'er',但不能匹配 "never" 的 'er' \d 匹配一个数字字符 等价于[0-9] \D 匹配一个非数字字符....)##g' echo {1..10} 带空格的每个都加上 #5.过滤IP #6.过滤文件,oldboy和oldbey的内容 #7.统计上面文件的单词数量 #8.统计上面文件的字母数量

71210

Linux系统开发: 学习linux三剑客(awk、sed、grep)(下)

字段是用空格隔开的单词段。 $0 这个变量包含执行过程当前行的文本内容。 [A] NF 表示字段数,在执行过程对应于当前的字段数。而$NF则表示一行的最后一个字段。...sub( Ere, Repl, [ In ] ) 用 Repl 参数指定的字符串替换 In 参数指定的字符串的由 Ere 参数指定的扩展正则表达式的第一个具体值。sub 函数返回替换的数量。...match( String, Ere ) 在 String 参数指定的字符串(Ere 参数指定的扩展正则表达式出现在其中)返回位置(字符形式),从 1 开始编号,或如果 Ere 参数不出现,则返回 0..., Repl, [ In ] ),替换所有与正则表达式相匹配的具体值 需用到字符串函数:sub( Ere, Repl, [ In ] ),替换第一个正则表达式相匹配的具体值 需用到正则表达式:[-],...;print len=index(info,"test");}' 2.10.11 指定正则表达式匹配查找 需用到字符串函数:match( Str, Ere );成功返回在str能匹配ERe正则表达式的位置

4.8K10

正则表达式教程:实例速查

\$\d 匹配一个数字前面有一个$的字符串 - >试试吧! 请注意,您还可以匹配不可打印的字符,制表符\ t,换行符\ n,回车符\ r。...标志位 基础部分,如何构建一个正则表达式还有一个基本概念:标志。 正则表达式通常以这种形式/abc /出现,其中搜索模式由两个斜杠字符/分隔。...\b表示像插入符号(它类似于$和^)的匹配位置,其中一侧是单词字符(\w)而另一侧不是单词字符(例如,它可能是字符串的开头或者空格字符)。 它伴随着它的否定,\B。...试试吧! 你也可以使用否定运算符! d(?!r) 仅在不跟随r的情况下匹配d,但r将不是整体正则表达式匹配的一部分->尝试它!...总结 正如您所看到的,正则表达式的应用程序字段可以是多个的,我确信您在开发人员职业生涯中看到的任务至少识别出这些任务一个,这里是一个快速列表: 数据验证(例如检查时间字符串是否格式正确) 数据抓取

1.6K30

PHP核心技术与最佳实践 读书笔记 第三章 正则表达式基础与应用

分隔符:是除了字母,数字,反斜线以及空白字符意外的任何字符(/ !...\b 是正则表达式规定的一个特殊代码,代表单词的开头或者结尾,也就是单词的分界处。...3.2.1 什么是元字符 元字符(Meta-Characters)是正则表达式具有特殊意义的专用字符,用来规定其前导字符在目标对象的出现模式。 元字符 描述 ....匹配除换行符以外的任何字符 \w 匹配字母或数字或下划线或汉字 \s 匹配任意空白符 \d 匹配数字 \b 匹配单词的开始或结束 ^ 匹配字符串的开始 $ 匹配字符串的结束 - 表示范围 [] 匹配括号的任意一个字符...后一个例子没看懂 略过 3.3.7 环视 只有断言为真时才会继续进行匹配。 1 顺序肯定环视(?=exp) 2 逆序肯定环视(?<=exp) 3 顺序否定环视(?!

62110

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券