当前位置:网站首页>OpenRefine中的正则表达式
OpenRefine中的正则表达式
2022-08-04 05:24:00 【superchao1982】
Regular Expression(正则表达式)
----------------------------------------------------------------
在GREL函数(replace/find/match)中使用正则表达式时,需要用//将正则表达式引起来。
正则表达式能够定义一个文本样式,而不需要指定一系列精确的文本集。
通过建立一些字符集来表示需要查找的内容,与数量符,锚符,可选符和组符配合使用就可以满足你的查找需求。
----------------------------------------------------------------
#字符集# ————表示被匹配的字符是什么
正则表达式使用字符集(字母,数字,空格等)来查找字符
. : 代表除换行符以外的任意字符
\d: 代表任何数字,每次都写[0-9]可能比较麻烦,可以用\d来表示任意数字
\D: 代表非数字,可以是字母或者其他字符,等价于[^0-9]
\w: 代表一个任何字母、数字或下划线的字符,注意其不包括空格
\W: 代表一个不是字母、数字或下划线的字符
\s: 代表一个空白符,包括空格、Tab健和换行符
\S: 代表不是空白符的任意字符
\n: 代表换行符
--1: a.a.a ---> 匹配到至少连续出现三次字母a,并且两个a 之间有一个任意字符,例如: dulcamara/alabaster/salamander
--2: 19\d\d ---> 匹配到所有20世纪的年份
--3: 19.. ---> 匹配到所有19开头的四位字符,除了所有20世纪的年份外,还包括19th/19M$等
\: 转义符,表示特殊含义的字符,例如: 真实的.可以表示为\.,反斜杠\可以表示为\\,[可以表示为\[,]可以表示为\]
--1:[\[\]] ---> 匹配文本包含左方括号[或者右方括号]的字符串
--2: \[2\] ---> 匹配真实的2,且前后分别有一个左方括号和右方括号,例如: [2]
--3: \? ---> 匹配真实的?
--4: \( ---> 匹配真实的(
--5: \) ---> 匹配真实的)
--6: \* ---> 匹配真实的*
--7: \$ ---> 匹配真实的$
--8: \| ---> 匹配真实的|
--9: "|Stones||Bones|||Buildings".replace(/^\|/, "") ---> Stones||Bones|||Buildings,即删除最开始的管道符|
-10: "|Stones||Bones|||Buildings".replace(/\|+/, "|") ---> |Stones|Bones|Buildings,即将连续出现的多个管道符|改为一个
-11: "|Stones||Bones|||Buildings".split("|").uniques().join("|") ---> Stones|Bones|Buildings,先分割再去重最后再组合
[]: 方括号[ ]用来指定一系列的待选单个字符集。在方括号内使用 - 来指定字符域的范围。
--1: [0123456789] ---> 匹配其中任何一个数字
--2: [0-9] ---> 匹配其中任何一个数字
--3: [a-z] ---> 匹配所有小写字母
--4: [A-Z] ---> 匹配所有大写字母
--5: [0-9a-zA-Z] ---> 匹配所有字母和数字
--6: analy[sz]e ---> 匹配美式拼写(analyze)和英式拼写(analyse)
--7: [0-9][a-z] ---> 表示一个数字后面跟至少一个小写字母
--8: [a-z][0-9][0-9][0-9] ---> 表示一个字母后面跟至少三个数字
--9: [0-9] [a-z] ---> 表示一个数字和一个字母中间存在一个空格,例如: 1 cm/25 in/12345 meters都符合要求
-10: [^xyz] ---> 方括号中[]的^表示取反,表示匹配除了[]中的字符
-11: [^a-zA-Z0-9] ---> 代表不是字母且不是数字,例如: 标点符号/连续空格,但是不包括空值null,因为null不是字符
-12: [^a-zA-Z0-9]\d[^a-zA-Z0-9] ---> 代表任何一个数字,且其前后都有一个字符,这个字符不是字母及数字,例如: (3)
#数量符# ————表示被匹配字符的数量
?: 前面的字符重复0次或1次
*: 前面的字符重复0次及以上
+: 前面的字符重复1次及以上
{n}: 前面的字符重复n次
{n,}: 前面的字符重复n次及以上
{,n}: 前面的字符重复n次及以下
{n,m}: 前面的字符重复n次-m次
--1: N\d{5}, ---> 将匹配字母N 开头,后面跟5 位数字,然后是一个逗号
#锚符# ————不是表达有什么字符被匹配,而是要确定字符串的哪个位置被匹配
^: 代表整体字符串的开始位置
$: 代表整体字符串的结束位置
\b: 代表单词的开始位置或结束位置,单词分隔符包括空格、标点符号和换行符
--1: ^\d ---> 匹配开始为一个数字
--2: \d$ ---> 匹配结束为一个数字
--3: ^\d.*\d$ ---> 匹配开始为一个数字,0 个或更多的任意字符(表达式中的点),结尾为一个数字
--4: ^\d+$ ---> 匹配任意长度的数字
--5: \b\d{3}\b ---> 匹配三位的数字
#可选符# ————除了前面的方括号[]中的字符表示可选外,有的时候待选的内容不止一个字符
|: 代表或的意思
--1: glass|wood|steel ---> 匹配glass或者wood或者steel
--2: \d+|many|few ---> 匹配任意数字或者many或者few
--3: N\d{5},|N\d{8}, ---> 匹配以N 开头以“,”结尾,中间要么是五位数要么是八位数,其他的都不匹配
#组符# ————如果对一组字符应用数量符,就需要把他们用圆括号( )括起来
(): 代表对括起来的正则表达式表示的字符是一组且具有高优先级,可以用美元符号$跟一个数字来定义组
--1: (la)+ ---> 匹配la,lala,lalala等,而la+则匹配la, laa, laaa等
--2: analy(z|s)e ---> 匹配analyze 或者 analyse,等同于analy[zs]e
--3: analyz(e|ing) ---> 匹配包含analyze 或 analyzing
--4: "--23rd".replace(/(\d+)rd$/,"No. $1rd:") ---> --No. 23rd:,$1表示第1组,$0代表整个表达式的结果
边栏推荐
- 编程大杂烩(四)
- C专家编程 第5章 对链接的思考 5.1 函数库、链接和载入
- C Expert Programming Chapter 4 The Shocking Fact: Arrays and pointers are not the same 4.1 Arrays are not pointers
- TSF微服务治理实战系列(一)——治理蓝图
- JS basics - forced type conversion (error-prone, self-use)
- 2022年PMP考试延迟了,该喜该忧?
- Dynamic programming of the division of numbers
- [Cocos] cc.sys.browserType可能的属性
- Canal mysql data synchronization
- Typora 使用保姆级教程 | 看这一篇就够了 | 历史版本已被禁用
猜你喜欢

el-Select selector bottom fixed

少年成就黑客,需要这些技能

Can 't connect to MySQL server on' localhost3306 '(10061) simple solutions

8.03 Day34---BaseMapper查询语句用法

Teenage Achievement Hackers Need These Skills

数的划分之动态规划

4.3 Annotation-based declarative transactions and XML-based declarative transactions

Delphi-C端有趣的菜单操作界面设计

如何将 DevSecOps 引入企业?

sql server如何得到本条记录与上一条记录的差异,即变动值
随机推荐
C语言 -- 操作符详解
谷粒商城-基础篇(项目简介&项目搭建)
嵌入式系统驱动初级【3】——字符设备驱动基础中_IO模型
Can‘t connect to MySQL server on ‘localhost3306‘ (10061) 简洁明了的解决方法
8款最佳实践,保护你的 IaC 安全!
MySql数据恢复方法个人总结
DataTable uses Linq for grouping and summarization, and converts the Linq result set into DataTable
word 公式编辑器 键入技巧 | 写数学作业必备速查表
7.16 Day22---MYSQL(Dao模式封装JDBC)
8.03 Day34---BaseMapper query statement usage
SLSA 框架与软件供应链安全防护
The difference between px, em, and rem
商城系统APP如何开发 都有哪些步骤
C1认证之web基础知识及习题——我的学习笔记
力扣:343. 整数拆分
动态规划总括
3面头条,花7天整理了面试题和学习笔记,已正式入职半个月
4.2 声明式事务概念
7、特殊SQL的执行
C专家编程 第5章 对链接的思考 5.6 轻松一下---看看谁在说话:挑战Turning测验