shell 正则表达式与文件名匹配

1) . : 匹配任意单ASCII
字符,可以为字母,或为数字。
2) 举例: ..XC..匹配deXC1t、23XCdf等,.w..w..w.匹配rwxrw-rw-
行首以^匹配字符串或字符序列
1) ^ :
允许在一行的开始匹配字符或单词。
2) 举例:
^.01 匹配0011cx4、c01sdf 等,^d
匹配drwxr-xr-x、drw-r--r--等

行尾以$匹配字符串或字符

1) $ : 在行尾匹配字符串或字符,$符号放在匹配单词后。
2) 举例: trouble$ 匹配以单词trouble结尾的所有行
^$匹配所有空行

使用*匹配字符串中的单字符或其重复序列(与文件名置换中的"*"不一样)

1) * : 一个单字符后紧跟*,匹配0
个或多个此单字符。
2) 举例: compu*t 将匹配字符u一次或多次,即匹配computer
computing compuuute等
1033* 可以匹配 101333 10133 1013444等
3)
在正则表达式中使用"*",有时会产生非预期的结果。


使用\屏蔽一个特殊字符的含义
1) \ :
用来屏蔽一个元字符的特殊含义。因为有时在shell
中元字符有特殊含义。\可以使其失去应有意义。
2) 举例: 在正则表达式中匹配以*.pas
结尾的所有文件: \*\.pas$

使用[]匹配属于一个范围或集合单个字符
1) [ ] :
匹配"[
]"内的字符。可以是一个单字符,也可以是字符序列。可以使用"-"表示括号"[ ]"内字符序列范围,

如用[1-5]代替[12345]。可以用逗号","分隔括号"[]"内的字符。
2) 当"^"符号当直接靠着"[",意指否定或不匹配括号"[]"里内容
3) 举例: [0-9]匹配任意一个数字;[a-z]匹配任意一个小写字母;[0-9A-Za-z]匹配任意字母或数字;
[C,c]omputer 匹配Computer和computer;[^a-zA-Z]匹配任一非字母型字符

使用"\{\}"匹配模式结果出现的次数
1)
pattern\{n\}

: 匹配模式pattern 出现n 次的情形。
2)
pattern\{n,\}  : 匹配模式pattern 最少出现n 次的情形。
3)
pattern\{,m\}  : 匹配模式pattern 最多出现m 次的情形。
4)
pattern\{n,m\} : 匹配模式pattern
出现次数在n与m 之间的情形。
5) 举例: A\{2\}B 匹配的值为AAB
A\{2,\}B 
 匹配的值可以是AAB
或AAAAAB,但不能匹配AB

A\{2,4\}B  匹配的值可以是AAB、AAAB、AAAAB,但不能匹配AB 或AAAAAB 等

[0-9]\{4\}CX[0-9]\{4\}  匹配数字出现4次后跟CX,最后是数字出现4 次的情形
6)
实际上真正的格式是 {n} {n,} {,m} {n,m},只不过对"{"和"}"应用了Esacpe 字符"\"。

经常使用的正则表达式举例
[Ss]igna[lL] 
 匹配单词signal、signaL、Signal、SignaL

[Ss]igna[lL]\. 同上,但加一句点
^USER$      
 只包含USER的行
\.          
带句点的行
^d..x..x..x   对用户、用户组及其他用户、组成员有可执行权限的目录
^[^l] 
      排除符号链接文件后的文件目录列表(即不是以"l"开始的行)

[yYnN]        大写或小写y或n
^.*$ 
       匹配行中任意字符串

^......$      包括6 个字符的行
[a-zA-Z]    
  任意单个字母
[a-z]*       至少一个小写字母

[^0-9\$]      非数字或美元符号
[123]    
     1 到3中一个数字
\^q      
    以^q开始行
^.$      
   仅有一个字符的行

^\.[0-9][0-9]  以一个句点和两个数字开始的行
[0-9]\{2\}-[0-9]\{2\}-[0-9]\{4\} 
          

日期格式dd-mm-yyyy

[0-9]\{3\}\.[0-9]\{3\}\.[0-9]\{3\}\.[0-9]\{3\}  类IP地址格式

            
            
         

nnn.nnn.nnn.nnn
.*          
匹配任意多个字符

shell 正则表达式与文件名匹配,布布扣,bubuko.com

时间: 2024-08-02 19:08:30

shell 正则表达式与文件名匹配的相关文章

第七章 Shell正则表达式

正则表达式在每种语言中都会有,目的就是匹配符合你预期要求的字符串. 7.1 Shell正则表达式 基础正则表达式:BRE(basic regular express) 扩展正则表达式:ERE(extend regular express),扩展的表达式有+.?.|和() 符号 描述 示例 . 匹配除换行符(\n)之外的任意单个字符 匹配123: echo -e "123\n456" |grep -E '1.3' ^ 匹配字符串开头 匹配以abc开头的行: echo -e "a

Linux shell 正则表达式用法

1.“ \  ” 用法 用于关闭其后续字符的特殊含义,恢复字符的本身含义,如:\\ 表示字符 \ 2. “ . " 用法 匹配任意单个字符 3. " * " 用法 匹配任意字符,可以是单个,也可以是多个,和 ”.“ 字符的去吧是是否可以匹配多个任意字符 4. "^" 的用法 在行的起始处开始匹配紧接着的字符,如 ^6,匹配行的首字符为6的行. 5." $ " 的用法 和 “^” 用法相似,表示在行的结尾处开始匹配字符,如 6$,匹配行的

第十五章 shell正则表达式

第十五章 shell正则表达式 见图片 Shell正则表达式 正则表达式的分类 基本的正则表达式(Basic Regular Expression 又叫Basic RegEx 简称BREs) 扩展的正则表达式(Extended Regular Expression 又叫Extended RegEx 简称EREs) Perl的正则表达式(Perl Regular Expression 又叫Perl RegEx 简称PREs) 基本组成部分 正则表达式的基本组成部分. 正则表达式 描述 示例 Bas

JAVA之旅(三十四)——自定义服务端,URLConnection,正则表达式特点,匹配,切割,替换,获取,网页爬虫

JAVA之旅(三十四)--自定义服务端,URLConnection,正则表达式特点,匹配,切割,替换,获取,网页爬虫 我们接着来说网络编程,TCP 一.自定义服务端 我们直接写一个服务端,让本机去连接,可以看到什么样的效果 package com.lgl.socket; import java.io.IOException; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; publ

Delphi 正则表达式语法(3): 匹配范围

Delphi 正则表达式语法(3): 匹配范围 // [A-Z]: 匹配所有大写字母 var   reg: TPerlRegEx; begin   reg := TPerlRegEx.Create(nil);   reg.Subject := 'CodeGear Delphi 2007 for Win32';   reg.RegEx  := '[A-Z]';   reg.Replacement := '◆';   reg.ReplaceAll;   ShowMessage(reg.Subject

Delphi 正则表达式语法(7): 匹配转义字符

Delphi 正则表达式语法(7): 匹配转义字符 // ? 号的意义是匹配 0-1 次, 如果需要匹配 ? 怎么办 var   reg: TPerlRegEx; begin   reg := TPerlRegEx.Create(nil);   reg.Subject := '你好吗? 还行!';   reg.RegEx  := '\?|!'; // 加转义用的 \   reg.Replacement := '◆';   reg.ReplaceAll;   ShowMessage(reg.Sub

正则表达式的全局匹配模式

首先,要明确一点,所有的正则表达式都有一个lastIndex属性,用于记录上一次匹配结束的位置.如果不是全局匹配模式,那lastIndex的值始终为0,在匹配过一次后,将会停止匹配. 正则表达式的全局匹配模式,就是在创建正则表达式的时候使用g标识符或者将global属性设置为true,在全局匹配模式下,正则表达式会对指定要查找的字符串执行多次匹配.每次匹配使用当前正则对象的lastIndex属性的值作为在目标字符串中开始查找的起始位置.如果找不到匹配的项lastIndex的值会被重新设置为0.

正则表达式的汉字匹配

这里是几个主要非英文语系字符范围 2E80-33FFh:中日韩符号区.收容康熙字典部首.中日韩辅助部首.注音符号.日本假名.韩文音符,中日韩的符号.标点.带圈或带括符文数字.月份,以及日本的假名组合.单位.年号.月份.日期.时间等. 3400-4DFFh:中日韩认同表意文字扩充A区,总计收容6,582个中日韩汉字. 4E00-9FFFh:中日韩认同表意文字区,总计收容20,902个中日韩汉字. A000-A4FFh:彝族文字区,收容中国南方彝族文字和字根. AC00-D7FFh:韩文拼音组合字区

关于正则表达式的递归匹配问题

经常会有这样的需求,要求匹配出成对的小括号里的内容, 而一般正则表达式中的 ?R 的语法似乎在C#中不被支持, 在一番努力之下,终于找到以下一段描述 /(  应该是 \( 不是用 /转义而是用 \来转义 匹配嵌套的构造 微软公司已经包含了一个有趣的创新来匹配稳定的构造(历史上,这是正则表达式所做不到的).这并不容易掌握 — 尽管这节较短,但是注意,它非常的晦涩难懂. 从一个例子开始可能更简单一些,所以我用这段代码作为开始: Regex r = new Regex(@"/((?>[^()]+