当前位置:网站首页>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代表整个表达式的结果
边栏推荐
- 读者让我总结一波 redis 面试题,现在肝出来了
- C专家编程 第4章 令人震惊的事实:数组和指针并不相同 4.3 什么是声明,什么是定义
- SLSA 框架与软件供应链安全防护
- What are the steps for how to develop a mall system APP?
- C专家编程 第5章 对链接的思考 5.3 函数库链接的5个特殊秘密
- 7. Execution of special SQL
- string类简介
- Towards Real-Time Multi-Object Tracking (JDE)
- The 2022 PMP exam has been delayed, should we be happy or worried?
- el-Select selector bottom fixed
猜你喜欢
Grain Mall - Basics (Project Introduction & Project Construction)
如何将 DevSecOps 引入企业?
【评价类模型】Topsis法(优劣解距离法)
数的划分之动态规划
【云原生--Kubernetes】Pod资源管理与探针检测
leetcode 12. Integer to Roman numeral
What is the salary of a software testing student?
[Cloud Native--Kubernetes] Pod Resource Management and Probe Detection
一个对象引用的思考
Tactile intelligent sharing - SSD20X realizes upgrade display progress bar
随机推荐
自动化测试的成本高效果差,那么自动化测试的意义在哪呢?
C语言 -- 操作符详解
The symbol table
About yolo7 and gpu
《看见新力量》第四期免费下载!走进十五位科技创业者的精彩故事
How to view sql execution plan offline collection
npm安装依赖报错npm ERR! code ENOTFOUNDnpm ERR! syscall getaddrinfonpm ERR! errno ENOTFOUND
渗透测试(PenTest)基础指南
Teenage Achievement Hackers Need These Skills
9、动态SQL
[One step in place] Jenkins installation, deployment, startup (complete tutorial)
字节最爱问的智力题,你会几道?
day13--postman interface test
高性能高可靠性高扩展性分布式防火墙架构
关于yolo7和gpu
力扣:746. 使用最小花费爬楼梯
在被面试官说了无数次后,终于潜下心来整理了一下JVM的类加载器
canal实现mysql数据同步
4.3 基于注解的声明式事务和基于XML的声明式事务
8款最佳实践,保护你的 IaC 安全!