模式匹配

Linux Bash文本操作之sed

最后都变了- 提交于 2019-12-03 15:49:00
作为Linux系统中文本处理的强力工具之一,sed功能强大,用法多变,值得我们好好学习。 sed是用于过滤和转换文本的流编辑器。 一般情况下sed把当前处理的行存储在临时缓冲区,按指定命令处理之后将缓冲区内容输出到屏幕,当然可以使用-n选项使得不打印内容到屏幕。另外这些操作 默认对原文本没有影响,不会改变原来的文本内容 ,但是如果我们确实想要将处理结果作用于原文本,使用-i选项将修改附加到原文件,注意要谨慎使用! 调用方式 命令行输入 sed -e 'command' input_file 脚本文件输入 sed -f script_file input_file 下面通过一些实际操作说明一下 sed (未加说明即是指 sed (GNU sed ) 4.2 . 2 ,下同)常用参数的含义和用法 首先获得实验文本 cv@cv: ~/myfiles$ touch test.txt cv@cv: ~/myfiles$ man sed | head -n 30 | tail -n 28 > test.txt cv@cv: ~/myfiles$ cat test.txt 1 NAME 2 sed - stream editor for filtering and transforming text 3 4 SYNOPSIS 5 sed [OPTION]... {script-only-if

字符串与模式匹配算法(一):BF算法

空扰寡人 提交于 2019-12-03 15:37:28
一、BF算法的基本思想   BF(Brute Force)算法 是模式匹配中最简单、最直观的算法。该算法最基本的思想是从主串的第 start 个字符起和模式P(要检索的子串)的第1个字符比较,如果相等,则逐个比较后续字符;比较过程中一旦发现不相等的情况,则 回溯 到主串的第 start+1 个字符位置,重新和模式P的字符进行比较。 二、算法代码 1 package algorithm; 2 3 import java.util.Scanner; 4 5 /** 6 * 字符串匹配算法:BF 7 */ 8 public class BF { 9 // 主串 10 private String s1; 11 // 目标串 12 private String s2; 13 14 /** 15 * 控制台输入主串、目标串 16 * 使用{@link Scanner#nextLine}能接收当前行(非结尾的)的其余部分,包括空格。 17 * 当然使用Scanner是其中的一种方法。 18 */ 19 public void read() { 20 // 输入主串 21 System.out.println("请输入主串: "); 22 Scanner scan = new Scanner(System.in); 23 // 输入要匹配得字符 24 System.out.println(

Python 正则表达式Ⅴ

浪子不回头ぞ 提交于 2019-12-03 14:29:09
正则表达式对象 re.RegexObject re.compile() 返回 RegexObject 对象。 re.MatchObject group() 返回被 RE 匹配的字符串。 start() 返回匹配开始的位置 end() 返回匹配结束的位置 span() 返回一个元组包含匹配 (开始,结束) 的位置 正则表达式修饰符 - 可选标志 正则表达式可以包含一些可选标志修饰符来控制匹配的模式。修饰符被指定为一个可选的标志。多个标志可以通过按位 OR(|) 它们来指定。如 re.I | re.M 被设置成 I 和 M 标志: 正则表达式模式 模式字符串使用特殊的语法来表示一个正则表达式: 字母和数字表示他们自身。一个正则表达式模式中的字母和数字匹配同样的字符串。 多数字母和数字前加一个反斜杠时会拥有不同的含义。 标点符号只有被转义时才匹配自身,否则它们表示特殊的含义。 反斜杠本身需要使用反斜杠转义。 由于正则表达式通常都包含反斜杠,所以你最好使用https://www.xuanhe.net/原始字符串来表示它们。模式元素(如 r'\t',等价于 '\\t')匹配相应的特殊字符。 下表列出了正则表达式模式语法中的特殊元素。如果你使用模式的同时提供了可选的标志参数,某些模式元素的含义会改变。 来源: https://www.cnblogs.com/danjiu/p/11799804

JavaScript正则表达式用法汇总

回眸只為那壹抹淺笑 提交于 2019-12-03 11:54:38
JavaScript正则表达式的用法 正则表达式是一种可以用于模式匹配和替换的强大工具,在很多语言中都可以应用。JavaScript对正则表达式提供了很好的支持, Javascript中有一个正则表达式对象RegExp。该对象提供了大量的属性和方法来处理正则表达式,同时,String对象也提供了相关的方法来处理正则表达式,在Web应用中,经常使用正则表达式来验证用户输入的信息,例如在用户注册过程中,验证输入的Email地址是否合法。以下我们就介绍一下正则表达式的基本用法。 JavaScript正则表达式的基本用法 正则表达式的作用主要有三: 验证数字是否符合特定模式; 利用正则表达式找到特定文本而后删除或者替换文本; 按模式匹配在字符串中查找查找匹配子字符串。 Javascript中使用正则表达式的方法有二: 一是使用RegExp对象 其基本语法为: var rx=new RegExp(pattern[,flags]); ,其中参数pattern是一个字符串,表示要使用的正则表达式模式,参数flag为一个可选的字符串,表示如何应用模式的标志,多种标志可以组合使用。 主要有三种模:g;全文查找出现的所有模式;i:忽略大小写;m:多行查找; 二是使用正则表达式直接量 var rx=/pattern/flags; pattern表示使用的正则表达式模式,flag如何应用的标记同上;

正则表达式基础语法

半腔热情 提交于 2019-12-03 09:58:21
今天没事,整理了下re模块的基础语法。 1、首先我们要知道原子: 原子是正则表达式中最基本的组成单位,每个正则表达式中至少包含一个原子。 常见的原子类型有: 普通字符作为原子 如:a b c 字母 非打印字符作为原子 如:\n \t 通用字符作为原子 如:\d \D \w \W \s \S 原子表 如:多个原子拼接在一起 2、非打印字符: 字符 描述 \cx 匹配由x指明的控制字符。例如, \cM 匹配一个 Control-M 或回车符。 x 的值必须为 A-Z 或 a-z 之一。否则,将 c 视为一个原义的 'c' 字符。 \f 匹配一个换页符。等价于 \x0c 和 \cL。 \n 匹配一个换行符。等价于 \x0a 和 \cJ。 \r 匹配一个回车符。等价于 \x0d 和 \cM。 \s 匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v] 。 \S 匹配任何非空白字符。等价于 [^ \f\n\r\t\v] 。 \t 匹配一个制表符。等价于 \x09 和 \cI。 \v 匹配一个垂直制表符。等价于 \x0b 和 \cK。 3、通用字符: 字符 描述 \d 匹配一个数字字符。等价于 [0-9] 。 \D 匹配一个非数字字符。等价于 [^0-9] 。 \s 匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [\f\n\r\t\v] 。 \S

串的两种模式匹配方式(BF/KMP算法)

╄→гoц情女王★ 提交于 2019-12-03 09:55:23
前言 串,又称作字符串,它是由0个或者多个字符所组成的有限序列,串同样可以采用顺序存储和链式存储两种方式进行存储,在主串中查找定位子串问题(模式匹配)是串中最重要的操作之一,而不同的算法实现有着不同的效率,我们今天就来对比学习串的两种模式匹配方式: 朴素的模式匹配算法(Brute-Force算法,简称BF算法) KMP模式匹配算法 朴素的模式匹配算法(BF算法) BF算法是模式匹配中的一种常规算法,它的思想就是: 第一轮 :子串中的第一个字符与主串中的第一个字符进行比较 若相等 ,则继续比较主串与子串的第二个字符 若不相等 ,进行第二轮比较 第二轮 :子串中的第一个字符与主串中第二个字符进行比较...... 第N轮 :依次比较下去,直到全部匹配 图示说明: 第一轮: 第二轮: ...... 原理一致,省略中间步骤 第五轮: 第六轮: 代码实现: 看完文字与图例讲解,我们来动手实现一个这样的算法 简单归纳上面的步骤就是: 主串的每一个字符与子串的开头进行匹配,匹配成功则比较子串与主串的下一位是否匹配,匹配失败则比较子串与主串的下一位,很显然,我们可以使用两个指针来分别指向主串和子串的某个字符,来实现这样一种算法 匹配成功,返回子串在主串中第一次出现的位置,匹配失败返回 -1,子串是空串返回 0 int String::bfFind(const String &s, int pos)

Java 正则表达式

蹲街弑〆低调 提交于 2019-12-03 08:20:46
正则表达式定义了字符串的模式。 正则表达式可以用来搜索、编辑或处理文本。 正则表达式并不仅限于某一种语言,但是在每种语言中有细微的差别。 正则表达式实例 一个字符串其实就是一个简单的正则表达式,例如 Hello World 正则表达式匹配 "Hello World" 字符串。 . (点号)也是一个正则表达式,它匹配任何一个字符如:"a" 或 "1"。 下表列出了一些正则表达式的实例及描述: 正则表达式 描述 this is text 匹配字符串 "this is text" this\s+is\s+text 注意字符串中的 \s+ 。 匹配单词 "this" 后面的 \s+ 可以匹配多个空格,之后匹配 is 字符串,再之后 \s+ 匹配多个空格然后再跟上 text 字符串。 可以匹配这个实例:this is text ^\d+(\.\d+)? ^ 定义了以什么开始 \d+ 匹配一个或多个数字 ? 设置括号内的选项是可选的 \. 匹配 "." 可以匹配的实例:"5", "1.5" 和 "2.21"。 Java 正则表达式和 Perl 的是最为相似的。 java.util.regex 包主要包括以下三个类: Pattern 类: pattern 对象是一个正则表达式的编译表示。Pattern 类没有公共构造方法。要创建一个 Pattern 对象,你必须首先调用其公共静态编译方法

【算法视频】字符串模式匹配--布鲁特.福斯算法

匿名 (未验证) 提交于 2019-12-03 00:41:02
2.4 、字符串模式匹配 www.qghkt.com 腾讯课堂: https://qghkt.ke.qq.com/20个常用算法 模式串(或子串)在主串中的定位操作通常称为串的模式匹配,它是各种串处理系统中最重要的运算之一。 2.4.1 、布鲁特-福斯算法 【基本思想】 【图解过程】 给定主串“ABCDABCDABBABCDABCDABDD”,子串“ABCDABD”。 1)第一趟比较,先比较A,然后是BCDAB。 A B C D A B C D A B B A B C D A B C D A B D D A B C D A B 在比较最后一个字符D时,不匹配。 A B C D A B C D A B B A B C D A B C D A B D D A B C D A B D 2)第二趟比较,主串回退到比前一趟加1的位置。子串从0开始。第一个就不匹配。结束本趟。 A B C D A B C D A B B A B C D A B C D A B D D A 3)第三趟比较,主串前移一个位置,子串从0开始。第一个还是不匹配。同样结束本趟。 A B C D A B C D A B B A B C D A B C D A B D D A …… i)第i趟比较,找到可以匹配的子串 A B C D A B C D A B B A B C D A B C D A B D D A B C D

浅谈WM算法

匿名 (未验证) 提交于 2019-12-03 00:40:02
1. WM(Wu-Manber)算法的简单理解: (1)WM算法需要的参数: ∑:字母集 c: 字母集数目 m:模式串集合中,字符串长度最小的模式串的长度 B:字符块长度,是shift表的索引,一般取2或者3 h:当前扫描过程中长度为B的模式串子串 T:文本串 N:文本串总长度 P={P1, P2....Pk}:模式串集合 k:模式串的数目 C:前缀长度(PREFIX表使用) (2)WM算法的时间复杂度: O(BN/kM),由此可以看出,WM使用于大规模的模式串集合且模式串集合中最小长度较大的场景! (3)WM算法的核心思想: WM算法是对BM算法的延伸继承,用BM算法的核心框架,用字符块来计算shift表(取代坏字符表)进行跳转,在进行匹配时,用hash和prefix计算前后缀的hash值来从众多可选的模式串中快速筛选出正确匹配的模式串。 (4)WM算法的三张核心表: shift表:用于记录文本串向右移动的长度,即一张跳转表( ps:有点类似BM算法的坏字符表,不过BM是针对单字符,WM是针对字符块 )。 hash表:hash表记录了所有模式串后缀(长度为B)与模式串本身的映射关系。当shift[h]=0时,B与对应模式串P的映射关系,但是存在一对多的映射,因为模式串集合中存在相同后缀的模式串,所以hash表的value应该是一个链表的形式,存储多个模式串( ps:当shift

响应断言详解

匿名 (未验证) 提交于 2019-12-03 00:30:01
服务器 的响应进行断言校验    http://stackoverflow.com/questions/28214936/jmeter-in-which-scenario-i-can-use-main-sample-or-sub-sample-or-both-for-te    http://www.baidu.com/404.html (3)模式匹配规则      包括:返回结果包括你指定的内容,支持正则匹配      例如:      模式匹配规则:匹配      匹配:      模式匹配规则:匹配      例如:      模式匹配规则:匹配    文章来源: 响应断言详解