正则表达式的或匹配——[]和|(优先匹配)

前言: 在做算法题中, 关于字符串, 总是习惯于用正则表达式去处理。其中就有一个题目要求是匹配11, 1, 2。并对他们进行不同的替换。于是就有了这篇杂记。 本文主要是关于replace函数 ; 正则表达式中的[] 和 |的讲解。 如果看官有兴趣,请继续往下看。

最初的版本与出现的问题

看到该题, 第一反应写下的代码如下:

let str = "1111111111111111111112"
//正则表达式
let reg  = /[11 1 2]/g
//使用replace函数
str.replace(reg, function(match){
	//操作
})

在以上代码中, 你会发现永远都不会 匹配到11, 只会匹配1 和2。想了想在正则表达式中[]方括号中的元素, 没有优先级, 所以有1就会匹配1, 11就永远被1拦截了。

那么怎么办才能把11的优先级提到1的前面呢?

思来想去, 终于想起 “|” 这个或操作符。 首先, | 和[]相同的是,都是或操作符, 都多匹配。我想, 肯定有不同的地方, 于是大胆的测试, 第一版的问题终于解决的了。 |会先匹配放在前面的元素。

(这里有一个问题, 是之前为没有理解清楚[]的原因造成的, 那就是[11 1 2]匹配的是1和空格还有2三个字符)

第二版代码

let str = "1111111111111111111112"
//正则表达式
let reg  = /11|1|2/g
//使用replace函数
str.replace(reg, function(match){
	//操作
	console.log(match)//能匹配11就打印11,否则才打印1
})
在MySQL中,使用正则表达式进行完全匹配需要注意几点。首先,正则表达式中的特殊字符需要用反斜线进行转义。例如,如果要匹配一个包含特殊字符的字符串,需要在该字符前面加上两个反斜线。例如,要匹配字符串"1 2"中的空格,可以使用正则表达式"1\\ 2"。其次,圆括号在正则表达式中被视为元字符,如果要使用其字面值,需要进行转义。例如,要匹配一个左括号或右括号,可以使用正则表达式"\\("或"\\)"。最后,MySQL的正则表达式函数是REGEXP_LIKE。通过使用该函数,可以在查询中进行正则表达式的完全匹配。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [MySQL数据库——MySQL REGEXP:正则表达式](https://blog.csdn.net/Itmastergo/article/details/130399940)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [MySQL 正则表达式函数大全](https://blog.csdn.net/horses/article/details/116795888)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值