正则表达式

二、正则表达式、文本正则化、编辑距离

心已入冬 提交于 2020-02-06 11:47:33
目录 二、正则表达式、文本正则化、编辑距离 2.1 Regular Expressions 2.1.1 基本的正则表达式模式 2.1.2 Disjunction(析取)、Grouping、以及优先级顺序 2.1.5 更多操作符(小结) 2.1.6 正则表达式替换、捕获组 2.2 Words 2.3 语料 2.4 文本正则化 2.4.1 利用 Unix 工具粗糙的分词和正则化 2.4.3 中文分词:最大匹配算法 2.4.4 词形还原以及词干提取 2.4.5 Byte-Pair Encoding(BPE) 2.5 最小编辑距离 最小编辑距离算法 参考: 二、正则表达式、文本正则化、编辑距离 文本正则化的目的是将文本转换成一种更方便使用、更标准的表达形式。正则表达是一个其中的一个强有力的工具。对于大部分语言的处理,通常第一步需要做分词,这一类任务叫做 Tokenization 。另一个很重要的步骤是 Lemmatization(词形还原,例如英文中 is, are, am 都是 be,对于中文这一步,主要是简繁转换等,主要用于处理词法复杂的语言) 。 Stemming(词干提取,通常是是分离后缀) 。文本正则化通常也包含 句子分割 ,例如以句号或者感叹号分割。 编辑距离 是基于编辑的次数(增删改)比较给定两个字符串之间的相似度。 2.1 Regular Expressions 类似于

神奇方法format()

大兔子大兔子 提交于 2020-02-06 07:19:42
今天写了一个小程序,发现别人的代码更简洁,后来发现他用了format()方法。 这里主要讲我今天遇到的用法 format_title = "{:^6}\t{:^8}\t{:^10}\t{:^10}\t{:^10}" print ( format_tittle . format ( "name" , "English" , "Maths" , "Chinese" , "Total" ) ) 有朋友会觉得第一行代码用了正则表达式吧,再仔细看看,又会发现不一样, 在正则表达式中符号 “^” 表示以什么什么开头,用在这根本不合适;而且,正则表达式中,也没有 “:” 这也许是format()的特殊用法: “{:} ” 表示format()中对应的参数(对不起,我的表达能力有点差)。例如:示例代码中{:^6}对应下面的"name" " ^" 表示居中显示 数字表示在显示格式时,标题所占宽度(多少个字母的宽度) \t就是插入制表符了 来源: CSDN 作者: 逆风扬尘 链接: https://blog.csdn.net/m0_46236946/article/details/104187575

linux grep命令详解

喜夏-厌秋 提交于 2020-02-06 04:24:42
记一次jenkins执行脚本kill命令时先进行grep模糊查询关键字时,查询出了两个服务…两个都给kill掉了…导致服务一直启动不了. kill ps -ef | grep java | grep all-web | awk '{print $2}' || echo pid not exist ~ 下面转载以下grep命令的博客以作记录. 使用时可以结合ps aux|grep **** 或者ps -ef|grep ***进行使用 原文链接:https://blog.csdn.net/qq_40797605/article/details/89075918 grep命令 grep 1.作用 Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来。grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户。 grep家族包括grep、egrep和fgrep。egrep和fgrep的命令只跟grep有很小不同。egrep是grep的扩展,支持更多的re元字符, fgrep就是fixed grep或fast grep,它们把所有的字母都看作单词,也就是说,正则表达式中的元字符表示回其自身的字面意义,不再特殊。linux使用GNU版本的grep。它功能更强,可以通过-G、-E

正则表达式区分一个字符串的长度是否为质数

ぃ、小莉子 提交于 2020-02-06 04:21:05
如何用正则表达式判断字符串的长度是否为一个质数? 答案 :^(?!(…+?)\1+$).* 解析: 令表达式一:(…+?) 表达式二:\1+ 首先匹配(…+?),\1是对前(…+?)的引用,+的意思是对/1所引用的部分重复至少一次。 其次是(…+?),表示这至少可以匹配两个及以上的字母,假设这里有X个重复的字母。 设X个重复的字母为字母组A,那么,两个表达式连在一起的意思就是A至少重复了2次(设重复次数为K次),那么如果匹配成功,字X符串里的字母数量就是K*X个,那字符串长度就一定是一个合数。 ?!的意思是正向否定预查,意思就是从不符合后面表达式的地方开始匹配,如果字符串长度为一个质数,那么就可以匹配该字符串,并且从第一个符合的空字符开始匹配。 .*可以匹配后面所有的字符,即完成匹配。 参考链接:https://www.cnblogs.com/Greatest/archive/2010/07/21/1782016.html https://q.cnblogs.com/q/100792/ 来源: CSDN 作者: 跳舞的巴比伦 链接: https://blog.csdn.net/qq_41136897/article/details/104185639

常用的正则表达式备忘录。

杀马特。学长 韩版系。学妹 提交于 2020-02-05 13:53:24
匹配正则 使用 .test() 方法 let testString = "My test string" ; let testRegex = /string/ ; testRegex. test (testString); 匹配多个模式 使用操作符号 | const regex = /yes |no|maybe/; 忽略大小写 使用 i 标志表示忽略大小写 const caseInsensitiveRegex = /ignore case /i ; const testString = 'We use the i flag to iGnOrE CasE' ; caseInsensitiveRegex. test (testString); // true 提取变量的第一个匹配项 使用 .match() 方法 const match = "Hello World!" .match( /hello/i ); // "Hello" 提取数组中的所有匹配项 使用 g 标志 const testString = "Repeat repeat rePeAT" ; const regexWithAllMatches = /Repeat/gi ; testString.match(regexWithAllMatches); // [ "Repeat" , "repeat" , "rePeAT" ]

Python中的正则表达式-re模块

ぐ巨炮叔叔 提交于 2020-02-05 13:07:22
有时候我们需要模糊查找我们需要的字符串等值,这个时候需要用到正则表达式。 正则表达式的使用,在python中需要引入re包 import re 1、首先了解下正则表达式的常用语法 ——单个字符 . 任意的一个字符 a|b 字符a或字符b [afg] a或者f或者g的一个字符 [0-4] 0-4范围内的一个字符 [a-f] a-f范围内的一个字符 [^a] 不是a的一个字符 \s 一个空格 \S 一个非空格 \d [0-9],即0-9的任意字符 \D [^0-9],即非0-9的任意字符 \w [0-9a-zA-Z] \W [^0-9a-zA-Z] \b 匹配一个单词边界,也就是指单词和空格间的位置。例如,“er\b”可以匹配“never”中的“er”,但不能匹配“verb”中的“er” \B 匹配非单词边界。“er\B”能匹配“verb”中的“er”,但不能匹配“never”中的“er” ——重复 * 重复>=0次 + 重复>=1次 ? 重复0次或是1次 {m} 重复m次,如[01]{2}匹配字符串00或11或01或10 {m,n} 重复m-n次,如a{1,3}匹配字符串a或aa或aaa ——位置 ^ 字符串的起始位置 $ 字符串的结尾位置 ——返回控制 对搜索的结果进行进一步精简信息,可以使用小括号扩住对应的正则表达式。如 m = re.search("output_(\d{4})

JavaScript

六月ゝ 毕业季﹏ 提交于 2020-02-05 09:25:00
JavaScript JavaScript:概念:一门客户端脚本语言 * 运行在客户端浏览器中,每个浏览器都有JavaScript的解析引擎 * 脚本语言:不需要编译,直接就可以被浏览器解析执行了 * 功能 * 可以来增强用户和html页面的交互过程,可以来控制html元素,让页面有一些动态的效果,增强用户的体验 JavaScript = ECMAScript + JavaScript自己特有的东西 ( BOM和DOM ) * ECMAScript:客户端脚本语言的标准 1. 基本语法 1. 与htmL结合方式 1. 内部JS: * 定义 < Scpript > , 标签体内容就是js代码 2. 外部JS: * 定义 < Script > ,通过src属性引入外部的js文件 * 注意: 1. < script > 可以定义html的任意地方。但是定义的地方会影响执行的顺序。 2. < script > 可以定义多个。 2. 注释 1. 单行注释: //注释内容 2. 多行注释: /*注释内容*/ 3. 数据类型: 1. 原始数据类型 ( 基本数据类型 ) : 1. number : 数字。整数 / 小数 / NAN ( not a number 一个不是数字字符类型 ) 2. string : 字符串。 3. boolean : true 和 false 4. null:

【MySQL必知必会】学习笔记Day3

最后都变了- 提交于 2020-02-05 09:12:39
【MySQL必知必会】学习笔记Day3&1.23&D8-9章&P46-61页 基本概念 通配符 : 用来匹配值的一部分的特殊字符 搜索模式 :由字面值、通配符或两者组合构成的搜索条件 LIKE :为在搜索子句中使用通配符,必须使用LIKE操作符 %通配符 :在搜索串中,%表示任何字符出现任意次数 _通配符 :下划线只匹配单个字符而不是多个字符 REGEXP :后所跟的东西作为正则表达式 . :是正则表达式语言中一个特殊的字符。表示匹配任意一个字符 | :为正则表达式的OR操作 符。它表示匹配其中之一 [ ] :用来匹配特定的字符,[123]的意思是匹配1或2或3 [^ ] :字符集合否定,[^123]可以匹配除这些字符123外的东西 - :集合可用来定义要匹配的一个或多个字符,“-”来定义一个范围 6、用通配符进行过滤 (1)LIKE操作符 为在搜索子句中使用通配符,必须使用LIKE操作符。LIKE指示MySQL后跟的搜索模式利用通配符匹配而不是直接相等匹配进行比较。 (2)百分号(%)通配符 在搜索串中,%表示任何字符出现任意次数 eg:找出所有以词jet起头的产品 SELECT prod_id,prod_name FROM products WHERE prod_name LIKE 'jet%'; 注: 区分大小写:根据MySQL的配置方式,搜索可以是区分大小写的

关于JS 中正则表达式第一次判断为 true,第二次判断为false的问题。

ε祈祈猫儿з 提交于 2020-02-05 02:18:35
前言:今天在做自己的个人项目的时候,使用邮箱的正则表达式进行匹配登录验证时发现用户输入的同一个值在使用同一个正则表达式进行匹配时,会出现第一次匹配为 true,第二次匹配却是false的问题。 我是使用JS 正则表达式对象中的 RegExp.test() 方法进行匹配的,后面查阅了相关资料之后发现了一些端倪。 首先,正则表达式主要分为如下几种: 1、 i (不区分大小写) 2、g (全局匹配) 3、m (多行匹配) 而在设置为 g 标志时使用 RegExp.test() 和 RegExp.exec() 两个方法进行匹配时(我是使用 g 标志的),两者会根据自身的 lastIndex 属性所指向的位置作为下次匹配的开始点,一旦RegExp匹配过一次之后,lastIndex 属性会变更,这时候再次使用此RegExp匹配值时则会返回 false 。 问题代码如下: let reg = /^([a-zA-Z0-9_-])+@(sina|qq)+((\.[a-zA-Z0-9_-]{2,3}){1,2})$/g console . log ( reg . test ( '15698@qq.com' ) ) // true console . log ( reg . test ( '15698@qq.com' ) ) // false , 出现问题 通常出现这个问题,可以有以下两种解决方案: 1