2、正则表达式进阶_之一

#!/usr/bin/perl

foreach $var(glob("*.wav"))
{
        #$var =~ /.*(00.*).wav/;
        $var =~ /.*(00\d\d).wav/;
        $Newvar = ‘SpkContext_zj_‘.$1.‘.wav‘;
        system("mv $var $Newvar");
        print "Now is processing $var \t \n";
}
print "Over \n";
  1. 能使用更准确的正则表达式,就不要使用模糊的正则表达式:

    1. 例如,文件名字如下:SpkContext_0001.wav
    2. 我们要捕获,其中的0001这4个字符串(或者也可以叫做数字),我现在有了两种写法:
      1. $var =~ /.*(00.*).wav/;
      2. $var =~ /.*(00\d\d).wav/;
    3. 上面两种写法,当然是第二种的写法更加具体,更加准确。
    4. 第一种写法,会出现的问是:
      1. 捕获到的变量$1的值为001,而不是0001
      2. 第二种写法则不会出现这种问题。
时间: 2024-11-06 17:34:19

2、正则表达式进阶_之一的相关文章

iOS进阶_地图上定位的标志——大头针

一.添加大头针 地图使用的框架是MapKit 大头针走的是MKAnnotation协议 /* 注意:因为是满足协议MKAnnotation,所以没有MKAnnotation的系统大头针类,必须自定义大头针类,我自定义的为MyAnnotation 大头针: 在iOS开发中经常会标记某个位置,需要使用地图标注,也就是大家俗称的“大头针”.只要一个NSObject类实现MKAnnotation协议就可以作为一个大头针,通常会重写协议中coordinate(标记位置).title(标题).subtitl

Python 进阶_生成器 & 生成器表达式

目录 目录 相关知识点 生成器 生成器 fab 的执行过程 生成器和迭代器的区别 生成器的优势 加强的生成器特性 生成器表达式 生成器表达式样例 小结 相关知识点 Python 进阶_迭代器 & 列表解析 生成器 带有 yield 关键字的的函数在 Python 中被称之为 generator(生成器).Python 解释器会将带有 yield 关键字的函数视为一个 generator 来处理.一个函数或者子程序都只能 return 一次,但是一个生成器能暂停执行并返回一个中间的结果 -- 这就

网易云课堂_C语言程序设计进阶_第一周:数据类型:整数类型、浮点类型、枚举类型

C语言程序设计进阶_第一周:数据类型:整数类型.浮点类型.枚举类型 1.0数据类型 1.1整数类型 1.2浮点类型 1.3逻辑类型 1.4类型转换和条件运算 1.0数据类型 1 整数 char(%c), short, int(%d), long(%ld), long long(C99) 2 浮点数 float(%f), double(%lf), long double(C99) 3 逻辑 bool(C99) 4 指针 5 自定义类型 所表达的数的范围:char<short<int<flo

『Re』正则表达式模块_常用方法记录

『Re』知识工程作业_主体识别 一个比较完备的正则表达式介绍 几个基础函数 re.compile(pattern, flags=0) 将正则表达式模式编译成一个正则表达式对象,它可以用于匹配使用它的match ()和search ()等方法. 实际有两种使用方式: pattern.匹配方法(string) 或者 re.匹配方法(pattern,string) 使用或|来强化匹配规则: pattern_t = re.compile( '[0-9〇一二三四五六七八九]{4}年.{1,2}月.{1,3

Python正则表达式------进阶

Python正则表达式 正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配. Python 自1.5版本起增加了re 模块,它提供 Perl 风格的正则表达式模式. re 模块使 Python 语言拥有全部的正则表达式功能. compile 函数根据一个模式字符串和可选的标志参数生成一个正则表达式对象.该对象拥有一系列方法用于正则表达式匹配和替换. re 模块也提供了与这些方法功能完全一致的函数,这些函数使用一个模式字符串做为它们的第一个参数. 本章节主要介绍Pyt

正则表达式进阶

捕获组 捕获组就是把正则表达式中子表达式匹配的内容,保存到内存中以数字编号或手动命名的组里,以供后面引用. 表达式 说明 (Expression) 普通捕获组,将子表达式Expression匹配的内容保存到以数字编号的组里 (?<name> Expression) 命名捕获组,将子表达式Expression匹配的内容保存到以name命名的组里 普通捕获组(在不产生歧义的情况下,简称捕获组)是以数字进行编号的,编号规则是以“(”从左到右出现的顺序,从1开始进行编号.通常情况下,编号为0的组表示整

bash 正则表达式进阶--egrep

bash的正则表达式有些特殊的用法,需要使用egrep来替代grep语句: 1. "+" 重复前一个字符re至少一次(这里要区别".",也即重复0或者更多次) 2. "?" 重复前一个字符0或者1次 3. "|" 或者的意思,匹配前或者匹配后都算匹配成功 4. "()" 群组匹配,我的理解(就是把括号内的内容当作一个整体去匹配) 5. "()+" 重复括号内的内容至少一次 原文地址:ht

廖雪峰Java9正则表达式-2正则表达式进阶-3分组匹配

匹配电话号码 匹配成功后,如果提取想要的字符串 使用(...)可以分组:"^(\d{3,4})\-(\d{6,8})$" String.matcher vs Pattern.matcher public static void main(String[] args){ String regex = "^\\d{3,4}\\-\\d{6,8}"; System.out.println("010-123456789".matches(regex));

正则表达式进阶——你从没想过的正则表达式使用方式

对正则表达式感兴趣的可以玩一下RegexGolf:https://alf.nu/RegexGolf 从中可以学到三个新的技能: 1.正则表达式不匹配 如果你想匹配含有镜像子串的字符串,如abba.anallagmatic.bassarisk等等. 你可以写出正则表达式: (.)(.)\2\1 但是要是你不想匹配这些字符串的话,可以这么写正则表达式: ^(?!.*(.)(.)\2\1) 利用"^"和"(?!...)",即匹配字符串的开头,然后前视取反来完成. 2.正则