Python3 如何优雅地使用正则表达式

Python3 如何优雅地使用正则表达式
Python3 如何优雅地使用正则表达式

正则表达式(Regular expressions 也称为REs,或regexes 或regex patterns)本质上是一个微小的且高度专业化的编程语言。它被嵌入到Python 中,并通过re 模块提供给程序猿使用。使用正则表达式,你需要指定一些规则来描述那些你希望匹配的字符串集合。这些字符串集合可能包含英语句子、

e-mail 地址、TeX 命令,或任何你想要的东东。

正则表达式模式被编译成一系列的字节码,然后由一个C 语言写的匹配引擎所执行。对于高级的使用,你可能需要更关注匹配引擎是如何执行给定的RE,并通过一定的方式来编写RE,以便产生一个可以运行得更快的字节码。本文暂不讲解优化的细节,因为这需要你对匹配引擎的内部机制有一个很好的理解。但本文的例子均是符合标准的正则表达式语法。

小甲鱼注释:Python 的正则表达式引擎是用C 语言写的,所以效率是极高的。另,所谓的正则表达式,这里说的RE,就是上文我们提到的“一些规则”。

正则表达式语言相对较小,并且受到限制,所以不是所有可能的字符串处理任务都可以使用正则表达式来完成。还有一些特殊的任务,可以使用正则表达式来完成,但是表达式会因此而变得非常复杂。在这种情况下,你可能通过自己编写Python 代码来处理会更好些;尽管Python 代码比一个精巧的正则表达式执行起来会慢一些,但可能会更容易理解。

小甲鱼注释:这可能是大家常说的“丑话说在前”吧,大家别管他,正则表达式非常优秀,她可以处理你98.3% 的文本任务,一定要好好学哦~~~~~

简单的模式

我们将从最简单的正则表达式学习开始。由于正则表达式常用于操作字符串的,因此我们从最常见的任务下手:字符匹配。

字符匹配

大多数字母和字符会匹配它们自身。举个例子,正则表达式 FishC 将完全匹配字符串 "FishC"。(你可以启用不区分大小写模式,这将使得 FishC 可以匹配 "FISHC" 或 "fishc",我们会在后边讨论这个话题。)

当然这个规则也有例外。有少数特殊的字符我们称之为元字符(metacharacter),它们并不能匹配自身,它们定义了字符类、子组匹配和模式重复次数等。本文用很大的篇幅专门讨论了各种元字符及其作用。

下边是元字符的完整列表(我们将在后边逐一讲解):

. ^ $ * + ? { } [ ] \ | ( )

小甲鱼注释:如果没有这些元字符,正则表达式就变得跟字符串的find() 方法一样平庸了......

我们先来看下方括号 [ ],它们指定一个字符类用于存放你需要匹配的字符集合。可以单独列出需要匹配的字符,也可以通过两个字符和一个横杆 - 指定匹配的范围。例如 [abc] 会匹配字符 a,b 或 c;[a-c] 可以实现相同的功能。后者使用范围来表示与前者相同的字符集合。如果你想只匹配小写字母,你的RE 可以写成 [a-z]。

需要注意的一点是:元字符在方括号中不会触发“特殊功能”,在字符类中,它们只匹配自身。例

如 [akm$] 会匹配任何字符 'a','k','m' 或 '$','$' 是一个元字符,但在方括号中它不表示特殊含义,它只匹配 '$' 字符本身。

你还可以匹配方括号中未列出的所有其他字符。做法是在类的开头添加一个脱字符号 ^ ,例如 [^5] 会匹配除了 '5' 之外的任何字符。

或许最重要的元字符当属反斜杠 \ 了。跟Python 的字符串规则一样,如果在反斜杠后边紧跟着一个元字符,那么元字符的“特殊功能”也不会被触发。例如你需要匹配符号 [ 或 \,你可以在它们前面加上一个反斜杠,以消除它们的特殊功能:\[,\\。

反斜杠后边跟一些字符还可以表示特殊的意义,例如表示十进制数字,表示所有的字母或者表示非空白的字符集合。

小甲鱼解释:反斜杠真牛逼,反斜杠后边跟元字符去除特殊功能,反斜杠后边跟普通字符实现特殊功能。

让我们来举个例子:\w 匹配任何字符。如果正则表达式以字节的形式表示,这相当于字符

类 [a-zA-Z0-9_];如果正则表达式是一个字符串,\w 会匹配所有Unicode 数据库(unicodedata 模块提供)中标记为字母的字符。你可以在编译正则表达式的时候,通过提供re.ASCII 表示进一步限

制 \w 的定义。

小甲鱼解释:re.ASCII 标志使得\w 只能匹配ASCII 字符,不要忘了,Python3 是Unicode 的。下边列举一些反斜杠加字符构成的特殊含义:

特殊字符含义

\d 匹配任何十进制数字;相当于类 [0-9]

\D 与 \d 相反,匹配任何非十进制数字的字符;相当于类 [^0-9]

\s 匹配任何空白字符(包含空格、换行符、制表符等);相当于类 [ \t\n\r\f\v]

\S 与 \s 相反,匹配任何非空白字符;相当于类 [^ \t\n\r\f\v]

\w 匹配任何字符,见上方解释

\W 于 \w 相反

\b 匹配单词的开始或结束

\B 与 \b 相反

它们可以包含在一个字符类中,并且一样拥有特殊含义。例如 [\s,.] 是一个字符类,它将匹配任何空白字符(/s 的特殊含义),',' 或 '.'。

最后我们要讲的一个元字符是 .,它匹配除了换行符以外的任何字符。如果设置了re.DOTALL 标志,. 将匹配包括换行符在内的任何字符。

重复的事情

使用正则表达式能够轻松的匹配不同的字符集合,但Python 字符串现有的方法却无法实现。然而,如果你认为这是正则表达式的唯一优势,那你就too young too native 了。正则表达式有另一个强大的功能,就是你可以指定RE 部分被重复的次数。

我们来看看 * 这个元字符,当然它不是匹配 '*' 字符本身(我们说过元字符都是有特殊能力的),它用于指定前一个字符匹配零次或者多次。

例如 ca*t 将匹配 ct(0 个字符a),cat(1 个字符a),caaat(3 个字符a),等等。需要注意的是,由于受到C 语言的int 类型大小的内部限制,正则表达式引擎会限制字符'a' 的重复个数不超过20 亿个;不过,通常我们工作中也用不到那么大的数据。

正则表达式默认的重复规则是贪婪的,当你重复匹配一个RE 时,匹配引擎会尝试尽可能多的去匹配。直到RE 不匹配或者到了结尾,匹配引擎就会回退一个字符,然后再继续尝试匹配。

我们通过例子一步步的给大家讲解什么叫“贪婪”:先考虑一下表达式 a[bcd]*b,首先需要匹配字符 'a',然后是零个到多个 [bcd],最后以 'b' 结尾。那现在想象一下,这个RE 匹配字符串 abcbd 会怎样?

步骤匹配说明

1 a 匹配RE 的第一个字符 'a'

2 abcbd 引擎在符合规则的情况下尽可能地匹配 [bcd]*,直到该字符串的结尾

3 失败引擎尝试匹配RE 最后一个字符 'b',但当前位置已经是字符串的结尾,所以失败告终

4 abcb 回退,所以 [bcd]* 匹配少一个字符

5 失败再一次尝试匹配RE 最后一个字符 'b',但字符串最后一个字符是 'd',所以失败告终

6 abc 再次回退,所以 [bcd]* 这次只匹配 'bc'

7 abcb 再一次尝试匹配字符 'b',这一次字符串当前位置指向的字符正好是 'b',匹配成功

最终,RE 匹配的结果是 abcb。

小甲鱼解释:正则表达式默认的匹配规则是贪婪的,后边有教你如何使用非贪婪的方法匹配。

另一个实现重复的元字符是 +,用于指定前一个字符匹配一次或者多次。

要特别注意 * 和 + 的区别:* 匹配的是零次或者多次,所以被重复的内容可能压根儿不会出现;+ 至少需要出现一次。例如 ca+t 会匹配 cat 和 caaat,但不会匹配 ct。

还有两个表示重复的元字符,其中一个是问号 ?,用于指定前一个字符匹配零次或者一次。你可以这么想,它的作用就是把某种东西标志位可选的。例如小?甲鱼可以匹配小甲鱼,也可以匹配甲鱼。

最灵活的应该是元字符 {m, n}(m 和n 都是十进制整数),上边讲到的几个元字符都可以使用它来表达,它的含义是前一个字符必须匹配m 次到n 次之间。例如 a/{1, 3}b 会匹配 a/b,a//b 和 a///b。但不会匹配 ab(没有斜杠);也不会匹配a////b(斜杠超过三个)。

你可以省略m 或者n,这样的话,引擎会假定一个合理的值代替。省略m,将被解释为下限0;省略n 则会被解释为无穷大(事实上是上边我们提到的20 亿)。

小甲鱼解释:如果是{, n} 相当于{0, n};如果是{m, } 相当于{m, +无穷};如果是{n},则是重复前一个字符n 次。

聪明的鱼油应该已经发现了,其实 *、+ 和 ? 都可以使用 {m, n} 来代替。{0,} 跟 * 是一样的;{1, } 跟 + 是一样的;{0, 1}跟 ? 是一样的。不过还是鼓励大家记住并使用 *、+ 和 ?,因为这些字符更短并且更容易阅读。

小甲鱼解释:还有一个原因是匹配引擎对* + ? 做了优化,效率要更高些。

松江飞繁控制器使用说明书G

1.系统概述: 1.1 系统简介: (1).JB-3208智能型模拟量火灾报警控制器(联动型)是我厂最近开发的新产品,具有系统容量大,性能优化,美观大方,整机稳定性好等特点。用指示灯显示屏的形式,来统一显示控制器的各种系统工作状态。 (2).系统容量大,单机最大容量为18144点,可满足建筑面积在50万平方米左右工程对火灾自动报警控制系统的需要。若有一个规模庞大的建筑群体,可用CAN总线把30台JB-3208智能型模拟量火灾报警控制器(联动型)联网起来管理。最大容量可达540000点,保护面积可达1500万平方米。每台单机最多可带160个多线模块和252台系统型火灾显示盘。 (3).智能型模拟量探测器使用微功耗MCU处理器,能自行处理模拟量传感器的数据并通过模数转换传输给火灾报警控制器,进行数据分析。控制器应用算法可对模拟量探测器的本底进行自动补偿,用软件方式对模拟量探测器的灵敏度进行调节,从而使得模拟量探测器能够适应使用环境对其灵敏度的要求。并可显示智能型模拟量探测器的运行数据和变化曲线,使用户更好地了解全系统的运行状态。(4).控制器采用480?234点阵式彩色液晶显示屏做文字图形显示,操作方便,直观清晰。 (5).JB-3208型控制器新产品是用全新的硬件和软件,以及内部结构、箱体外形和各种配件等诸多方面都进行重新设计,已于2009年6月取得了中国国家强制性产品认证证书(即“3C”认证书)。本产品在国内具有技术领先的水平,适合在高级别场合使用。 (6).本产品执行国家标准为GB4717-2005和GB16806-2006。

1.2 技术指标: (1).供电方式:交流电源(主电)AC220V(?10% ? ?15%)50?1Hz。 直流电源(备电)DC24V 24Ah。 (2).功率:监控功率 ? 80W ,最大功率 ? 400W (不包括联动电源)。(3).工作电源:由主机电源提供系统内所需直流工作电压 ?5V、?35V、?24V。(4).使用环境:温度 -10 0C ? 50 0C,相对湿度 ? 95 %(40 0C ? 2 0C)。(5).结构形式:壁挂式、柜式和台式三种。 1.3 系统配置: (1).每台控制器可配置72个全总线回路,每个回路可配置252点。控制器最大容量为18144点。 (2).每个全总线回路的配置:252点。全部采用软件编码的探测设备(包括手动报警按钮、消火栓按钮、水流指示器模块及其它输入模块。),全部采用模拟量探测器。 (3).每台控制器最多可配置160个多线联动模块,用于控制中央消防设备。每一块多线联动控制板可带8个多线联动点。每台控制器可带20块多线联动控制板,最多可带160个多线联动点。 (4).每台控制器最多可配置252台系统型火灾显示盘;回路型火灾显示盘按需要设置,每回路最多带8台回路型火灾显示盘。 (5).每台控制器具有2个标准RS-232串行通讯接口,1个CAN总线通讯接口,可供以下设备使用: 1).CAN总线联网:网上邻居总数最多为29个;包括本机在内,一共为30台控制器联网通讯。 2).COM1串行通讯接口:与HJ-1910型CRT彩显系统联网。

正则表达式

正则表达式 一、什么是这则表达式 正则表达式(regular expressions)是一种描述字符串集的方法,它是以字符串集中各字符串的共有特征为依据的。正则表达式可以用于搜索、编辑或者是操作文本和数据。它超出了java程序设计语言的标准语法,因此有必要去学习特定的语法来构建正则表达式。一般使用的java.util.regex API所支持的正则表达式语法。 二、测试用具 import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.Scanner; import java.util.regex.Matcher; import java.util.regex.Pattern; public class Regex{ public static void main(String[]args)throws Exception{ BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); if(br==null){ System.out.println("没有输入任何数据"); System.exit(1); } while(true){ System.out.print("输入表达式:"); Pattern pattern=https://www.360docs.net/doc/6514412718.html,pile(br.readLine()); System.out.print("输入字符串:"); Matcher matcher=pattern.matcher(br.readLine()); boolean found=false; while(matcher.find()){ System.out.println("找到子字符串"+matcher.group()+" 开始于索引"+matcher.start()+"结束于索引"+matcher.end()+"\n") found=true; } if(!found){ System.out.println("没有找到子字符串\n"); } } } }

K-CU01 主控制器模块使用说明书

HOLLiAS MACS -K 系列模块 2014年5月B版

HOLLiAS MAC-K系列手册- K-CU01 主控制器模块使用说明书 重要信息 危险图标:表示存在风险,可能会导致人身伤害或设备损坏件。 警告图标:表示存在风险,可能会导致安全隐患。 提示图标:表示操作建议,例如,如何设定你的工程或者如何使用特定的功能。

目录 1.概述 (1) 2.接口说明 (2) 2.1主控单元结构示意图 (2) 2.2底座接口说明 (4) 2.3地址跳线 (8) 2.4IO-BUS (11) 3.状态灯说明 (12) 4.其他特殊功能说明 (14) 4.1短路保护功能 (14) 4.2诊断功能 (15) 4.3冗余功能 (15) 4.4掉电保护 (16) 5.工程应用 (18) 5.1底座选型说明 (18) 5.2应用注意事项 (18) 6.尺寸图 (19) 6.1K-CU01尺寸图 (19) 6.2K-CUT01尺寸图 (19) 7.技术指标 (20) 7.1K-CU01主控制器模块 (20) 7.2K-CUT01 4槽主控器底座 (21)

K-CU01 主控制器模块 1.概述 K-CU01是K系列硬件的控制器模块,是系统的核心控制部件,主要工作是收集I/O模块上报的现场数据,根据组态的控制方案完成对现场设备的控制,同时负责提供数据到上层操作员站显示。 控制器基本功能块主要包括系统网通讯模块、核心处理器、协处理器(IO-BUS主站MCU)、现场通讯数据链路层、现场通讯物理层、以及外围一些辅助功能模块。 K-CU01控制器模块支持两路冗余IO-BUS和从站I/O模块进行通讯,支持两路冗余以太网和上位机进行通讯,实时上传过程数据以及诊断数据。可以在线下装和更新工程,且不会影响现场控制。 K-CU01控制器模块支持双冗余配置使用。当冗余配置时,其中一个控制器出现故障,则该控制器会自动将本机工作状态设置为从机,并上报故障信息;若作为主机出现故障,则主从切换;若作为从机出现故障,则保持该状态。 两块控制器模块K-CU01和两块IO-BUS模块安装在4槽主控底座K-CUT01上,就构成了一个基本的控制器单元。 通过主控底座的主控背板,完成两个控制器模块之间的冗余连接,控制器模块通过IO-BUS模块扩展可以连接最多100个I/O模块。 通过选用不同的IO-BUS模块,控制总线拓扑结构可构成星型和总线型;同时支持远程I/O机柜。 基本的控制器单元如图1-1所示。

C#利用正则表达式实现字符串搜索

C#利用正则表达式实现字符串搜索 2005-08-04 22:27 作者:张志远来源:天极网 【简介】 本文给出了在C#下利用正则表达式实现字符串搜索功能的方法,通过对.NET框架下的正则表达式的研究及实例分析,总结了正则表达式的元字符、规则、选项等。 加入收藏设为首页 -------------------------------------------------------------------------------- 3、.NET 框架的正则表达式类 下面通过介绍 .NET 框架的正则表达式类,熟悉一下.NET框架下的正则表达式的使用方法。 3.1 Regex 类表示只读正则表达式 Regex 类包含各种静态方法,允许在不显式实例化其他类的对象的情况下使用其他正则表达式类。以下代码示例创建了 Regex 类的实例并在初始化对象时定义一个简单的正则表达式。请注意,使用了附加的反斜杠作为转义字符,它将 \s 匹配字符类中的反斜杠指定为原义字符。 Regex r; // 声明一个 Regex类的变量 r = new Regex("\\s2000"); // 定义表达式 3.2 Match 类表示正则表达式匹配操作的结果 以下示例使用 Regex 类的 Match 方法返回 Match 类型的对象,以便找到输入字符串中第一个匹配。此示例使用 Match 类的 Match.Success 属性来指示是否已找到匹配。 Regex r = new Regex("abc"); // 定义一个Regex对象实例 Match m = r.Match("123abc456"); // 在字符串中匹配 if (m.Success) {

控制器使用说明书

JB-TB-BK8000 智能型火灾报警控制器(联动型) 本系统中的控制器采取模块化、积木式结构设计,使打印机、大屏幕汉显液晶屏、PC机、联动控制板、回路板可与主控板任意组合,32台控制器可构成大型网络,每台控制器其软件、硬件构成方式和带载能力完全相同,因此,即可成为主控机(集中机)又可做从机(区域机)使用。系统采用两总线、无极性、模拟量信号传输方式,总线上可并接所有的输入/输出模块及探测器。其性能符合国际GB4717-93和GB16806-1997的要求。 一、主要功能 1、故障报警 当检测点由于某种原因发生故障时,控制器面板上的黄色发光管点亮,液晶上显示总数及探测点的地址、位置、名称、时间等信息,并伴随有喇叭报警声。 若回路发生故障时,液晶屏的地址位置显示“_路”。 主、从机若通讯有故障时,液静晶屏的地址位置显示“—从机”。 2、预警报警 2.1监测点由于长期使用或者在调试过程中出现重码等原因引起模拟值偏高,系统将其作 为预警处理,面板上的预警灯被点亮,液晶显示预警总数及监测点的地址、位置、名称、时间等信息,并伴随有喇叭报警声。 2.2监测点接收到早期异常情况,但未达到报警点,系统须作进一步判断,系统将预警和 故障作为同一级别处理,因而在液晶上采用同屏显示。 3、火警、启动 当监测点发生火灾时,面板火警被点亮,且面板上的首火警地址,液晶屏上显示火警总数及监测点的地址、名称、位置、时间等信息,并伴随有喇叭报警声; 不管在手动或自动状态下,系统发出启动指令后,面板上联动灯被点亮;如果联动设备有回答信号时,液晶显示联动设备的地址,名称、位置、时间等信息,并伴随有喇叭报警声。 以上各种报警信息均可采用快捷键进行查询。 4、火警优先 在任何情况下,火警、启动为最高级别,优先于故障、预警。 5、消音键 任何报警引起的喇叭均利用消音键进行消音。 6、电源转换 系统采用了主电与备电两种供电方式,并具有自识别能力,能对主电的过压、欠压或失压以及备电低于额定的电压值时,失压等进行声与光的报警。 7、手动与自动 系统设有自动与手动的转换功能,通过自动与手动转换键完成。 8、复位 当火警、启动等状态发生后,系统具有保持功能,通过复位键可以使系统进行复位操作,从机可接受主机的复位信号。 9、关机记忆 系统对火警、启动几开、关机的时间具有记忆功能,以供随时查询。 10、时钟

Excel中使用正则表达式

Excel另类条件化格式 1 前言 我们知道,Excel的条件化格式可以根据单元个的内容来设置整个单元格的格式。如图1中的C列,当单元格的内容为“结束”时,字体颜色为绿色,为“进行中”时,颜色为黄色。但如果我们想把B列的部分特定文字(如日期2012-3-4)设置成不同的字体和颜色, Excel的条件化格式工具是不能实现的,需要另辟蹊径。 图1 2 实现过程 2.1 目标 实现B列单元格中日期字符串的字体设置成“Arial Black”字体,颜色为红色。 2.2 设计思路 Excel的VBA编程功能很强大,可以轻松实现上述目标。程序的设计思路是:找到日期字符串,然后设置字体格式。本例中利用了正则表达式来寻找日期字符串,通过Characters对象的Font属性来设置字符串的格式。 2.3 正则表达式 我们在处理文本时,经常会遇到一些满足某种规则的字符串。比如,一个无符号的整数由一连串的数字构成,本例中的日期是满足“整数-整数-整数”规则的字符串。正则表达式就是用来指定这种规则的。如果某个字符串满足正则表达式指定的规则,则称该字符串为正则表达式的一个“匹配串”。正则表达式中用\d 来匹配单个数字,用\d+来匹配连续的多个数字,这样本例中用"\d+-\d+-\d+"就可以匹配日期字符串。Excel的VBA可以通过引用vbscript中的正则标定式对象"vbscript.regexp"来使用正则表达式。 2.4 Characters函数 语法:Characters(start, length) 参数:Start是指从第几个字符处开始选择,length是要返回的字符数。 返回:Characters对象。用来控件文本中某一范围的字符串。例如,通过Characters对象的Font属性可以设置字符串的字体格式。 2.5程序代码 把FormatClick程序和“更新”按钮的Click事件关联起来,只要点击“更新”按钮就可以更新日期的字体的名称和颜色了。具体程序如下: Sub FormatClick() '声明正则表达式对象 Dim RegEx As Object '引用正则标定式对象 Set RegEx = CreateObject("vbscript.regexp")

正则表达式语法完整版

正则表达式基础知识 一个正则表达式就是由普通字符(例如字符a 到z)以及特殊字符(称为元字符)组成的文字模式。该模式描述在查找文字主体时待匹配的一个或多个字符串。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。如:

下面看几个例子: "^The":表示所有以"The"开始的字符串("There","The cat"等); "of despair$":表示所以以"of despair"结尾的字符串; "^abc$":表示开始和结尾都是"abc"的字符串——呵呵,只有"abc"自己了;"notice":表示任何包含"notice"的字符串。 '*','+'和'?'这三个符号,表示一个或一序列字符重复出现的次数。它们分别表示“没有或更多”,“一次或更多”还有“没有或一次”。下面是几个例子: "ab*":表示一个字符串有一个a后面跟着零个或若干个b。("a", "ab", "abbb",……);"ab+":表示一个字符串有一个a后面跟着至少一个b或者更多; "ab?":表示一个字符串有一个a后面跟着零个或者一个b; "a?b+$":表示在字符串的末尾有零个或一个a跟着一个或几个b。 也可以使用范围,用大括号括起,用以表示重复次数的范围。 "ab{2}":表示一个字符串有一个a跟着2个b("abb"); "ab{2,}":表示一个字符串有一个a跟着至少2个b; "ab{3,5}":表示一个字符串有一个a跟着3到5个b。

请注意,你必须指定范围的下限(如:"{0,2}"而不是"{,2}")。 还有,你可能注意到了,'*','+'和'?'相当于"{0,}","{1,}"和"{0,1}"。 还有一个'|',表示“或”操作: "hi|hello":表示一个字符串里有"hi"或者"hello"; "(b|cd)ef":表示"bef"或"cdef"; "(a|b)*c":表示一串"a""b"混合的字符串后面跟一个"c"; '.'可以替代任何字符: "a.[0-9]":表示一个字符串有一个"a"后面跟着一个任意字符和一个数字; "^.{3}$":表示有任意三个字符的字符串(长度为3个字符); 方括号表示某些字符允许在一个字符串中的某一特定位置出现: "[ab]":表示一个字符串有一个"a"或"b"(相当于"a|b"); "[a-d]":表示一个字符串包含小写的'a'到'd'中的一个(相当于"a|b|c|d"或者"[abcd]");"^[a-zA-Z]":表示一个以字母开头的字符串; "[0-9]%":表示一个百分号前有一位的数字; "[0-9]+":表示一个以上的数字; ",[a-zA-Z0-9]$":表示一个字符串以一个逗号后面跟着一个字母或数字结束。 你也可以在方括号里用'^'表示不希望出现的字符,'^'应在方括号里的第一位。(如:"%[^a-zA-Z]%"表 示两个百分号中不应该出现字母)。 为了逐字表达,必须在"^.$()|*+?{\"这些字符前加上转移字符'\'。 请注意在方括号中,不需要转义字符。

VC正则表达式的使用

VC正则表达式的使用 2010年9月11日星期六邵盛松 正则表达式是一种对字符进行模糊匹配的一个公式。在数据有效性验证,查找,替换文本中都可以使用正则表达式。 本篇文章主要描述的是使用ATL中两个模板类CAtlRegExp和CAtlREMatchContext。 在使用CAtlRegExp类之前需要添加#include 这个头文件。 RegExp是Regular Expression的缩写 以匹配邮件地址字符串为例说明两个类的使用 该示例更改自https://www.360docs.net/doc/6514412718.html,/en-us/library/k3zs4axe(VS.80).aspx CString strRegex=L"({[0-9_]+@[a-zA-Z0-9]+[.][a-zA-Z0-9]+[.]?[a-zA-Z0-9]+})"; CString strInput; strInput=L"admin@https://www.360docs.net/doc/6514412718.html,"; CAtlRegExp reRule; wchar_t *wt = (wchar_t *)(LPCTSTR)strRegex; REParseError status = reRule.Parse((const ATL::CAtlRegExp::RECHAR *)wt); if (REPARSE_ERROR_OK != status) { return 0; } CAtlREMatchContext mcRule; wt = (wchar_t *)(LPCTSTR)strInput; if (!reRule.Match((const ATL::CAtlRegExp::RECHAR *)wt,&mcRule)) { AfxMessageBox(L"您输入的邮件地址不合法!"); } else { for (UINT nGroupIndex = 0; nGroupIndex < mcRule.m_uNumGroups; ++nGroupIndex) { const CAtlREMatchContext<>::RECHAR* szStart = 0;

用正则表达式实现排版助手

用正则表达式实现排版助手(GIDOT TYPESETTER)的部分排版功能 2009年08月06日星期四上午 08:42 副标题:用正则表达式实现段首缩进、修正换行、修正非段落换行、删除行尾空格、删除空行 相信使用过排版助手的人应该都觉得这是一个好软件吧?不过,我对其中的“删除非段落换行”有一个不满的地方 [https://www.360docs.net/doc/6514412718.html,/gevolution90/blog/item/34cabb7fc2b8710128388ada. html]。于是才引发出这一篇文章。 *如果你还未有在windows下的正则表达式批量替换工具的话,推荐使用TextForever[https://www.360docs.net/doc/6514412718.html,/stronghorse/software/index.htm#Tex tForever],很强大的文本整理工具 1.段首缩进: 可以把每行(段)的前面格式化成指定的字符串,比如2个全角空格。 正则:^[ ]*(?=[^\s]) 你可以替换成2个全角空格或4个半角空格或你自己喜欢的任何字符串。 2.修正换行: 有些文章一行紧接着一行,看起来有点不舒服,可以把每段内容段(有文字的段)之间的换行格式化成指定数量的换行比如双换行(两段之间空一行空行)。 正则:[\r\n]+ 你可以替换成2个回车。 3.修正非段落换行: 有点文章很变态的,它从文本内容中实现换行,比如: 第一段的内容,内容,内容 第一段第二行的内容内容内容。 这样的换行,这对于资料的整理有点不利,所以,这个正则就是用来修正这样的换行的,把它们合并成一行,即一个段落。 正则:^(。{25,}[^……“”!!::??])\r\n 替换成:$1 把你认为不是段落结束的标点加入到那个中括号中,大括号中的“25”为作

js正则表达式使用

js正则表达式使用 一,概述 1,正则表达式,可以说是任何一种编程语言都提供的机制,它主要是提供了对字符串的处理能力。 2,正则表达式在页面处理中的使用场景: 1)表单验证。验证某些域符合某种规则,例如邮件输入框必须输入的是邮件、联系电话输入框输入的必须是数字等等 2)处理DOM模型。例如通过表达式定位DOM中的一个对象或一系列对象,一个例子就是定位id属性中含有某个特殊字符的div对象。 3)纯编程逻辑。直接用于编程的逻辑之中。 3,说明:本部分所举的正则表达式的代码片断,都是经过测试的,但有一点需要注意,对于换行的字符串的定义,我们在表述时使用的是类似如下的形式: var str=“It?s is a beautiful city”; 这种形式直接写在JS代码中是错误的,那如何获取具有换行的字符串呢?简单的办法:在textarea中输入文本并换行,然后将该值赋给JS变量即可。例如: var str=document.forms[0].mytextarea.value; 二,语法与使用 1,定义正则表达式 1)定义正则表达式有两种形式,一种是普通方式,一种是构造函数方式。 2)普通方式:var reg=/表达式/附加参数 表达式:一个字符串,代表了某种规则,其中可以使用某些特殊字符,来代表特殊的规则,后面会详细说明。 附加参数:用来扩展表达式的含义,目前主要有三个参数: g:代表可以进行全局匹配。 i:代表不区分大小写匹配。 m:代表可以进行多行匹配。 上面三个参数,可以任意组合,代表复合含义,当然也可以不加参数。 例子: var reg=/a*b/; var reg=/abc+f/g; 3)构造函数方式:var reg=new RegExp(“表达式”,”附加参数”); 其中“表达式”与“附加参数”的含义与上面那种定义方式中的含义相同。 例子: var reg=new RegExp(“a*b”); var reg=new RegExp(“abc+f”,”g”); 4)普通方式与构造函数方式的区别 普通方式中的表达式必须是一个常量字符串,而构造函数中的表达式可以是常量字符串,也可以是一个js变量,例如根据用户的输入来作为表达式参数等等: var reg=new RegExp(document.forms[0].exprfiled.value,”g”);

正则表达式在垂直搜索引擎中的应用

作者简介:张斌(1977-),硕士,讲师,研究方向:电子商务专业方向。 收稿日期:2010-05-06 正则表达式在垂直搜索引擎中的应用 张斌 (浙江越秀外国语学院,绍兴312000) 摘要:采用聚焦爬虫可以提高搜索引擎的检索效率,聚焦爬虫经常使用正则表达式来进行有效的信息检索,着重分析了网页检索中常用的正则表达式,为搜索引擎的构建提供帮助。关键词:正则表达式;聚焦爬虫;信息检索中图分类号:TP3 文献标识码:B 文章编码:1672-6251(2010)08-0162-02 Application of Regular Expressions in Vertical Search Engine ZHANG Bin (Zhejiang Yuexiu Foreign Language College,Shaoxing 312000) Abstract:Because focused crawler system can promote the efficiency of search engine and regular expression could used to get quick and efficient search.In this paper,regular expression used in web page index was analyzed for providing useful help for researcher in vertical search engine. Key words:regular expressions;focuses crawler;information retrieval 页面内容提取、分词、自然语言处理是聚焦爬虫的主要工作。在内容提取中采用正则表达可以明显提高效能,已在许多搜索程序中广泛应用。以下列举几个常用的正则表达,并分析其在聚焦爬虫中的应用方法,以供同行参考。 1正则表达式与文档内容提取 正则表达式是一种编程语言中使用的特殊代码模 式,可用其验证、查找、替换与划分文本内容。聚焦爬虫往往通过对主题网页的学习提取主题特征的正则表达式,以指导爬虫过滤与主题不相符的网页文本[4]。正则表达式基本技巧如下: (1)匹配多个字符之一。如匹配拼写错误的fac - tory ,可用:f [ae]ct [ou]ry ; (2)匹配文本行开始与结束。如以c 开始,a 结束,可用:^a.*b$; (3)匹配单词。如找dog ,可用:\bdog\b ; (4)Unicode 字母。如匹配中文,可用:[\u3400- \u4DB5\u4E00-\u9fa5]; (5)分组和捕获。如匹配年月日相同的日期,可用:\b\d\d (\d\d)-\1-\1\b ,其中1表示捕获分组1,即 (\d\d)中的内容,捕获分组可以表示临时存取的区域, 用于引用和替换; (6)重复匹配。完整HTML 文件可用: .*?.*?.*?.*.*?]*>.*>.*?. 其中:*表示一个或多个,?表示0个或一个,^表示否定。 Html 文件也可使用NekoHTML 做标签补偿,用HtmlParser 等解析程序将网页转换成一个个串联的Node ,用正则式过滤脚本、注释等标签,提取表格等结构化信息,实现网页去噪。其中包括为网页建立网站风格树和计算节点重要性来确定噪声元素。 2正则表达式编程 使用C#、Java 等编程语言的步骤如下:①要先要 导入函数库,其中C#用using System.Text.RegularEx - pressions ;Java 用import java.util.regex.*;②创建正则表达式对象,C#用Regex regexObj =new Regex (" regex pattern");Java 用Pattern regex=https://www.360docs.net/doc/6514412718.html,pile ("regex pattern");Matcher regexMatcher =regex.matcher (subjectString);③在网页信息提取中,拆分字符串、逐行查找为常用功能,C#代码如下:string []spli - tArray=Regex.Split (subjectString,"<[^<>]*>>"),其中

PHP 常用正则表达式 正则

PHP 常用正则表达式正则 平时做网站经常要用正则表达式,下面是一些讲解和例子,仅供大家参考和修改使用:"^\d+$"//非负整数(正整数+ 0) "^[0-9]*[1-9][0-9]*$"//正整数 "^((-\d+)|(0+))$"//非正整数(负整数+ 0) "^-[0-9]*[1-9][0-9]*$"//负整数 "^-?\d+$"//整数 "^\d+(\.\d+)?$"//非负浮点数(正浮点数+ 0) "^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$"//正浮点数"^((-\d+(\.\d+)?)|(0+(\.0+)?))$"//非正浮点数(负浮点数+ 0) "^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$"//负浮点数 "^(-?\d+)(\.\d+)?$"//浮点数 "^[A-Za-z]+$"//由26个英文字母组成的字符串 "^[A-Z]+$"//由26个英文字母的大写组成的字符串 "^[a-z]+$"//由26个英文字母的小写组成的字符串 "^[A-Za-z0-9]+$"//由数字和26个英文字母组成的字符串 "^\w+$"//由数字、26个英文字母或者下划线组成的字符串 "^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$"//email地址 "^[a-zA-z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?$"//url /^(d{2}|d{4})-((0([1-9]{1}))|(1[1|2]))-(([0-2]([1-9]{1}))|(3[0|1]))$/ // 年-月-日 /^((0([1-9]{1}))|(1[1|2]))/(([0-2]([1-9]{1}))|(3[0|1]))/(d{2}|d{4})$/ // 月/日/年 "^([w-.]+)@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.)|(([w-]+.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(]?)$" //Emil /^((\+?[0-9]{2,4}\-[0-9]{3,4}\-)|([0-9]{3,4}\-))?([0-9]{7,8})(\-[0-9]+)?$/ //电话号码 "^(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}| 1dd|2[0-4]d|25[0-5])$" //IP地址 匹配中文字符的正则表达式:[\u4e00-\u9fa5] 匹配双字节字符(包括汉字在内):[^\x00-\xff] 匹配空行的正则表达式:\n[\s| ]*\r 匹配HTML标记的正则表达式:/<(.*)>.*<\/\1>|<(.*) \/>/ 匹配首尾空格的正则表达式:(^\s*)|(\s*$) 匹配Email地址的正则表达式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)* 匹配网址URL的正则表达式:^[a-zA-z]+://(\\w+(-\\w+)*)(\\.(\\w+(-\\w+)*))*(\\?\\S*)?$ 匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$ 匹配国内电话号码:(\d{3}-|\d{4}-)?(\d{8}|\d{7})? 匹配腾讯QQ号:^[1-9]*[1-9][0-9]*$ 元字符及其在正则表达式上下文中的行为: \ 将下一个字符标记为一个特殊字符、或一个原义字符、或一个后向引用、或一个八进制转

McQuay麦克维尔模块式风冷冷水MCl控制器使用手册

MC302l控制器使用手册 适用于麦克维尔模块式风冷冷水/热泵机组 MAC210/MAC230D /DS/DM/DR/DRS/DR 一、操作 1、开关机 按ON/OFF键,机组在开机(RUN灯亮)、关机(RUN灯灭)之间切换。 2、模式选择 按“模式”键可在制冷/制热模式之间切换,须注意的是,模式却换必须在关机状态下进行。 3、参数查询 使用本控制器能查询它所联网的任意一台机组的工作状态及参数(有哪几台压缩机在工作、进水设置温度、进水温度、出水设置温度、出水温度、机组的定时设置、制冷防冻温度、冬季防冻温度、除霜温度等)。 按“机组”键后机组号码闪烁,此时按“▲”或“▼”键改变机组号,查看到的是不同机组的当前参数,若要查询某个机组的工作参数,找到欲查询的机组号时按“确定”键即可查询该机组的工作参数了,按“▲”或“▼”键查看该机组的不同的参数。 4、参数设置 ①按“密码”键显示器左下框内显示“密码输入”和“00”,按“▲”或“▼”键改变数值,当 选择到正确的用户密码后按“确定”键(出厂密码为“00”),显示框内显示时间,则表示已经输入正确的用户密码,可以进行以下设置: A、运行参数修改:在输入正确密码后,按照步骤②→③→④就能够完成运行参数的修改设 置。 B、用户密码修改:在输入正确密码后,按“密码”键显示框内只显示“00”,则表示进入用 户密码修改设置,按“▲”或“▼”键改变数值后,按“确定”键修改拥护密码完成, 同时跳出参数设置状态。 ②按“机组”键后机组号码闪烁,此时按“▲”或“▼”键改变机组号,找到欲设置参数的机 组号时按“确定”键即可设置该机组的工作参数了(可设置的参数有:制冷进水温度、制热进水温度)。 ③按“▲”或“▼”键选择要设置的参数,按“确定”键后就可以按“▲”或“▼”键设置参 数值,设置完成后按“确定”键保存设置结果。 ④重复步骤②可设置其他参数(注意:60秒内没有按键则退出参数设置)。 ⑤设置参数值必须在关机状态下进行。 5、实时时钟设置 用针形工具按“模式”键上方的小孔,液晶显示器上显示“星期设置”的字样,按“▲”或“▼” 键设置当前时间是星期几,设置好了之后再按小孔,星期设置成功,同时显示器上显示“时钟设置”时间会闪烁,此时按“▲”键修改小时,按“▼”键修改分钟,再按小孔即可保存设置时钟。 6、定时设置 ①按“定时”键后显示器上同时显示“星期设置”和“定时设置”的字样,此时按“▲”或“▼” 键选择要设置定时的时间在星期几,选好后按“确定”键,显示器上显示“定时设置”的字样,此时已经选定定时星期,进入定时次数设置。 ②进入定时次数设置后,按“▲”或“▼”键选择要设置当天的哪个定时(能设置4个,在“机 组号”上方有指示),按“确定”键选定某个定时,进入定时开或关的选择。 ③按“▲”或“▼”键选择“定时开”和“定时关”,按“确定”键选定当前这个定时是开还是 关,进入定时时间选择,此时显示器上显示“定时设置”和“时钟设置”并且时间闪烁。 ④再按“▲”键修改小时,按“▼”键,修改分钟,设置好时间后按“确定”键完成这个定时 的所有设置,同时保存这个设置,此时显示器上显示“定时设置”并且跳到步骤③,其中定时次数和定期星期顺序递增,循环设置一个星期的定时,直到退出定时设置。

正则表达式

要想真正的用好正则表达式,正确的理解元字符是最重要的事情。下表列出了所有的元字符和对它们的一个简短的描述。 字符描述 \ 将下一个字符标记为一个特殊字符、或一个原义字符、或一个向后引用、或一个八进制转义符。例如,“\n”匹配字符“n”。“\\n”匹配一个换行符。序列“\\”匹配“\”而“\(”则匹配“(”。 ^ 匹配输入字符串的开始位置。如果设置了RegExp对象的Multiline属性,^也匹配“\n”或“\r”之后的位置。 $ 匹配输入字符串的结束位置。如果设置了RegExp对象的Multiline属性,$也匹配“\n”或“\r”之前的位置。 * 匹配前面的子表达式零次或多次。例如,zo*能匹配“z”以及“zoo”。*等价于{0,}。 + 匹配前面的子表达式一次或多次。例如,“z o+”能匹配“zo”以及“zoo”,但不能匹配“z”。+等价于{1,}。 ? 匹配前面的子表达式零次或一次。例如,“do(es)?”可以匹配“does”或“does”中的“d o”。?等价于{0,1}。 {n} n是一个非负整数。匹配确定的n次。例如,“o{2}”不能匹配“Bob”中的“o”,但是能匹配“food”中的两个o。 {n,} n是一个非负整数。至少匹配n次。例如,“o{2,}”不能匹配“Bob”中的“o”,但能匹配“fo o o ood”中的所有o。“o{1,}”等价于“o+”。“o{0,}”则等价于“o*”。 {n,m} m和n均为非负整数,其中n<=m。最少匹配n次且最多匹配m次。例如,“o{1,3}”将匹配“fooooood”中的前三个o。“o{0,1}”等价于“o?”。请注意在逗号和两个数之间不能有空格。 ? 当该字符紧跟在任何一个其他限制符(*,+,?,{n},{n,},{n,m})后面时,匹配模式是非贪婪的。非贪婪模式尽可能少的匹配所搜索的字符串,而默认的贪婪模式则尽可能多的匹配所搜索的字符串。例如,对于字符串“oooo”,“o?”将匹配单个“o”,而“o+”将匹配所有“o”。 点匹配除“\n”之外的任何单个字符。要匹配包括“\n”在内的任何字符,请使用像“[\s\S]”的模式。

远程控制模块说明文档

远程控制模块使用文档
本文介绍的康耐德 C2000 M232-M,自带 16 路的开关量远程控制(继电器输出)和 16 路开关量采集功能,通过网络接口(TCP/IP)进行通信,可以实现通过电脑上位机对 远端设备的远程控制。
C2000 M232-M 是增强型金属外壳带导轨的 RS232 和开关量到 TCP/IP 的协议转换模 块,它向上提供 10M/100M 自适应以太网接口,向下提供 1 个标准 RS232 串行口和 32 个 开关量接点。实现一路 RS232 到 TCP/IP 网络和 TCP/IP 网络到 RS232 的数据透明传输, 同时可采集 16 路开关量输入(DI)与控制 16 路继电器开关量输出(DO),其中开关量 输入状态(DI)可主动上传到上位机(调用动态库)或通过上位机使用 MODBUS TCP 协 议查询而获取。
C2000 M232-M 内部集成 ARP、IP、ICMP、DHCP、HTTP、MODBUS TCP 等协议。通信参 数可通过软件设置,可使用动态 IP 或静态 IP,使用时可通过软件进行设置。
特点: →具有 TCP Server、TCP Client、UDP、虚拟串口、点对点连接等操作模式; →用户基于网络软件,不需要做任何修改就可以与 C2000 M232-M 通讯; →通过安装我们免费提供的虚拟串口软件,用户基于串口的软件不需要做任何修改 就可以与 C2000 M232-M 通讯; →对于需要开发软件的用户,我们免费提供通讯动态库、设置动态库或 OCX 控件; →通过设置软件或设置动态库进行参数设置; →支持 DNS 域名解析功能; →远程控制和采集开关量; →开关量输入输出状态可通过本公司动态库、控件或使用标准 MDOBUS TCP 协议控 制,方便开发或直接接入第三方软件使用;
→电源具有良好的过流过压、防反接保护功能;

正则表达式及小例子

字符串处理是许多程序中非常重要的一部分,它们可以用于文本显示,数据表示,查找键和很多目的.在Unix下,用户可以使用正则表达式的强健功能实现 这些目的,从Java1.4起,Java核心API就引入了java.util.regex程序包,它是一种有价值的基础工具,可以用于很多类型的文本处理,如匹配,搜索,提取 和分析结构化内容. java.util.regex是一个用正则表达式所订制的模式来对字符串进行匹配工作的类库包。它包括两个类:Pattern和Matcher. Pattern是一个正则表达式经编译后的表现模式。在java中,通过适当命名的Pattern类可以容易确定String是否匹配某种模式.模式可以象匹配某个特 定的String那样简单,也可以很复杂,需要采用分组和字符类,如空白,数字,字母或控制符.因为Java字符串基于统一字符编码(Unicode),正则表达式也 适用于国际化的应用程序. Pattern类的方法简述 方法说明 static Pettern compile(String regex,int flag)编译模式,参数regex表示输入的正则表达式,flag表示模式类型(Pattern.CASE_INSENSITIVE表示 不区分大小写) Matcher match(CharSequence input)获取匹配器,input时输入的待处理的字符串 static boolean matches(String regex,CharSequence input)快速的匹配调用,直接根据输入的模式regex匹配input String[]split(CharSequence input,int limit)分隔字符串input,limit参数可以限制分隔的次数 Matcher一个Matcher对象是一个状态机器,它依据Pattern对象做为匹配模式对字符串展开匹配检查。首先一个Pattern实例订制了一个所用语法与 PERL的类似的正则表达式经编译后的模式,然后一个Matcher实例在这个给定的Pattern实例的模式控制下进行字符串的匹配工作。 Matcher类的方法简述 方法说明 boolean matches()对整个输入字符串进行模式匹配. boolean lookingAt()从输入字符串的开始处进行模式匹配 boolean find(int start)从start处开始匹配模式 int groupCount()返回匹配后的分组数目 String replaceAll(String replacement)用给定的replacement全部替代匹配

正则表达式

正则表达式
目录
1. 引言 2. 基本语法 3. sed 4. awk 5. 练习:在 C 语言中使用正则表达式
1. 引言
以前我们用 grep 在一个文件中找出包含某些字符串的行,比如在头文件中找出一个宏定义. 其实 grep 还可以找出符合某个模式(Pattern)的一类字符串.例如找出所有符合 xxxxx@xxxx.xxx 模式的字符串(也就是 email 地址),要求 x 字符可以是字母,数字,下划 线,小数点或减号,email 地址的每一部分可以有一个或多个 x 字符,例如 abc.d@https://www.360docs.net/doc/6514412718.html,, 1_2@987-6.54,当然符合这个模式的不全是合法的 email 地址,但至少可以做一次初步筛选, 筛掉 a.b,c@d 等肯定不是 email 地址的字符串.再比如,找出所有符合 yyy.yyy.yyy.yyy 模 式的字符串(也就是 IP 地址),要求 y 是 0-9 的数字,IP 地址的每一部分可以有 1-3 个 y 字 符. 如果要用 grep 查找一个模式,如何表示这个模式,这一类字符串,而不是一个特定的字符串 呢?从这两个简单的例子可以看出,要表示一个模式至少应该包含以下信息: 字符类(Character Class):如上例的 x 和 y,它们在模式中表示一个字符,但是取 值范围是一类字符中的任意一个. 数量限定符(Quantifier): 邮件地址的每一部分可以有一个或多个 x 字符,IP 地址 的每一部分可以有 1-3 个 y 字符 各种字符类以及普通字符之间的位置关系:例如邮件地址分三部分,用普通字符@和. 隔开,IP 地址分四部分,用.隔开,每一部分都可以用字符类和数量限定符描述.为 了表示位置关系,还有位置限定符(Anchor)的概念,将在下面介绍.
规定一些特殊语法表示字符类,数量限定符和位置关系,然后用这些特殊语法和普通字符一 起表示一个模式,这就是正则表达式(Regular Expression).例如 email 地址的正则表达式 可以写成[a-zA-Z0-9_.-]+@[a-zA-Z0-9_.-]+\.[a-zA-Z0-9_.-]+,IP 地址的正则表达式可以 写成[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}.下一节介绍正则表达式的语法, 我们先看看正则表达式在 grep 中怎么用.例如有这样一个文本文件 testfile:
192.168.1.1
第 1 页 共 10 页

相关文档
最新文档