关闭

正则表达式

标签: 正则表达式
22人阅读 评论(0) 收藏 举报
分类:

1.基本概念

正则表达式是通过一些特殊字符的排列,用以查找、替换、删除一行或多行文字字符串。简单的说,正则表达式就是处理字符串的方法,是以行为单位来进行字符串的处理行为。

2.语系对正则表达式的影响

举个例子,在英文大小写的编码顺序中,zh_CN.big5及C这两种语系的输出结果分别入下:
LANG=C: 0 1 2 3 4……A B C……a b c……z
LANG=zh_CN: 0 1 2 3 4……a A b B……z Z
所以,在使用正则表达式时,需要注意当时环境的语系是什么,否则会影响选取结果。
下面介绍一些特殊符号和其的含义:
这里写图片描述
3.grep的一些高级参数

grep [-A] [-B] [–color=auto] ‘搜索字符串’ filename
参数:
-A:后面可加数字,除了列出该行外,后序的n行业列出来
-B:前面可加数字,除了列出该行外,前面的n行业列出来
–color=auto可将正确的那个选取数据列出颜色

4.基础正则表达式常见例题

例题1:查找特定字符串
查找特定字符串(含有’the’这个特定的字符串)
这里写图片描述
查找不含该字符串
这里写图片描述
不管大小写
这里写图片描述
例题2:利用[]查找集合字符
test与taste两个单词有共同点是,都含有’t?st’
这里写图片描述
查找含oo的字符,但前边的字符不为a~z中的字符
这里写图片描述
要求字符串是数字,注意连续编码使用的是’-‘号
这里写图片描述
也可以利用特殊符号
这里写图片描述
例题3:行首与行尾字符^$
当我们需要查询的字符只在行首列出,这个时候就需要制表符了
这里写图片描述
查找第一个字符以a~z打头的
这里写图片描述
查找第一个字符是大写的
这里写图片描述
查找第一个字符是小写的
这里写图片描述
开头不是英文字母的
这里写图片描述
总结:^在字符集合符号[]之内和之外是不同的,在[]之内表示反向选择,在[]之外表示定位在行首。
行尾结束为小数点.的那一行
这里写图片描述
注意到小数点具有其他的意义,所以使用转义字符\来解除特殊意义
空白行的查找
这里写图片描述
例题4:任意一个字符.与重复字符
.(小数点):一定有一个任意字符
*(星号):重复前一个0到无穷多次,为组合形态
查找g??d的字符串
这里写图片描述
o*代表具有空字符串或一个o以上的字符,则会将所有的结果打印出来
oo*代表第一个o必须存在,第二个o可有可无
ooo*查找含有至少两个以上oo的字符串
这里写图片描述
查找字符串开头和结尾都是g,但是两个g之间至少有一个o
这里写图片描述
查找以g开头和结尾的字符串所在的行,但中间的字符可有可无
这里写图片描述
例题5:限定连续RE字符范围{}
{}在shell中有特殊意义,我们需要用转义字符来让它失去特殊意义
查找两个o的字符串
这里写图片描述
5.基础正则表达式字符

这里写图片描述

6.sed工具

基本语法:
sed [-n/e/f/r] [动作]
参数:
-n:使用安静模式
-e:直接在命令模式上进行 sed 动作编辑
-f:直接将 sed 的动作写在一个文件内,-f filename 则可以执行 filename 内的 sed 动作
-r: sed 动作支持的是扩展型正则表达式的语法
-i:直接修改读取的文件内容,而不是由屏幕输出
动作说明: [n1,[n2]]function
n1,n2:可能存在,一般代表选择进行动作的行数,举个例子,如果我的动作是需要在1行到3行之间进行的,则“1,3[动作行为]”
function的参数说明:
a:新增,a的后可以接字符串,而这些字符串会在新的一行出现
c:替换,c的后面可以接字符串,这些字符串可以替换n1,n2之间的行
d:删除,d后边不需要接任何参数
i:插入,i的后面可以接字符串,而这些字符串会在新的一行出现
p:打印,将某个选择的数据打印出来,
s:替换,可以直接进行替换工作

7.扩展正则表达式

这里写图片描述

0
0
查看评论

正则表达式之?、(?:pattern)、(?!pattern)、(?=pattern)理解及应用

今天朋友问我一个问题,是这样子的,通过正则表达式匹配html标签input包含hidden的字符串,具体如下: "" 匹配下来,应该输出: "" 读了这个问题之后,觉得挺简单的,直接利用基本的语法包含头 还有hidden 不就OK了么?于是...
  • sunhuaer123
  • sunhuaer123
  • 2013-11-15 19:09
  • 59707

正则表达式 "^+$"等符号意义

1、字符/: 意义:对于字符,通常表示按字面意义,指出接着的字符为特殊字符,不作解释. 例如:/b/匹配字符’b’,通过在b 前面加一个反斜杠,也就是/b/,则该字符变成特殊字符,表示匹配一个单词的分界线. 或者,对于几个字符,通常说明是特殊的,指出紧接着的字符不是特殊的,而应该按字面解释. 例如:...
  • github_36362235
  • github_36362235
  • 2016-11-23 11:31
  • 1761

正则表达式——入门

写程序7年,从我身边接触到的人来看,相当多的程序员把正则表达式看得很高深,甚至觉得是一道不可跨越的鸿沟。有此想法的原因很简单:只是因为你没有花上几个小时的时间去学习一下正则的基础。对,只需要几个小时,你就能编写出自己需要的正则表达式。为了引导这些不敢触碰正则的朋友,我特别写了这篇正则的入门文章,希望...
  • sq_zhuyi
  • sq_zhuyi
  • 2013-10-18 10:29
  • 18553

正则表达式中的"^"这个符号的一些思考

在学习正则表达式的时候,一些常见的规则我们都不难理解,但是有 一个正则表达式中的特殊字符让我一直有点搞不懂,就是”^”这个字符,文档上给出了解释是匹配输入的开始,如果多行标示被设置成了true,同时会匹配后面紧跟的字符。比如/^A/会匹配"An e"中的A,但是不会匹配"...
  • sufubo
  • sufubo
  • 2016-03-27 11:03
  • 18779

最全正则表达式汇总—想要的都有了

正则式太难学,而且容易忘记 ,西西是看过很多次,都是一会就全部不记得了滴。很多不太懂正则的朋友,在遇到需要用正则校验数据时,往往是在网上去找很久,结果找来的还是不很符合要求。所以我最近把开发中常用的一些正则表达式整理了一下,在这里分享一下。给自己留个底,也给朋友们做个参考。 一、校验数字的表达式 ...
  • SH_King
  • SH_King
  • 2015-07-24 14:01
  • 1381

正则表达式中的逻辑运算符或(怎么用逻辑运算符或连接两个正则表达式)

今天使用正则表达式是遇到一个问题, 磨了半天, 发现犯了个低级错误, 因此记录下来加深印象 问题描述:  我需要把 ^drawable(-[a-zA-Z0-9]+)*$  和  ^mipmap(-[a-zA-Z0-9]+)*$ 这两个正则表达式用或的关系连接起...
  • voo00oov
  • voo00oov
  • 2015-07-20 11:07
  • 9699

正则表达式简介及在C++11中的简单使用

正则表达式简介及在C++11中的简单使用
  • fengbingchun
  • fengbingchun
  • 2017-02-02 13:41
  • 7549

正则表达式常见例题

常见例题 例1:北美地区的电话号     编码方案:电话号码有一个3位数的区号和一位7位数的号码组成(这个7位数有分成  一个3位的局号和一个4位的路号,局号和路号之间使用连字符分隔) 每位电话号码可以是任意数字,但是区号和局号的第一位数字不能是0或1.实...
  • wenwen1538
  • wenwen1538
  • 2014-11-09 15:23
  • 2361

正则表达式的四种功能

正则表达式主要是针对字符串进行操作,可以简化对字符串的复杂操作,其主要功能有匹配、切割、替换、获取。 一、匹配 检查字符串是否符合正则表达式中的规则,有一次不匹配,则返回false。如: String str="abc"; String reg="[a-zA-Z...
  • tanpeng199134
  • tanpeng199134
  • 2016-09-18 08:19
  • 1841

c实现极简单的正则表达式解析

c实现极简单的正则表达式解析 define 头文件 ///////////////////////////////////define 头文件/////////////////////////////////// #ifndef _DEFINE_H_ #define _DEFINE_H...
  • ppdyhappy
  • ppdyhappy
  • 2015-08-19 11:10
  • 724
    个人资料
    • 访问:7927次
    • 积分:694
    • 等级:
    • 排名:千里之外
    • 原创:60篇
    • 转载:0篇
    • 译文:0篇
    • 评论:1条
    文章分类
    最新评论