相关文章推荐
胡子拉碴的斑马  ·  VIM ...·  3 月前    · 
发呆的地瓜  ·  岁月不败美人,经典无惧岁月 | 南方周末·  2 年前    · 
侠义非凡的小蝌蚪  ·  【国机智骏GC1】国机智骏_国机智骏GC1报 ...·  3 年前    · 
奔放的竹笋  ·  神十四成功出征!航天概念股达78只 ...·  3 年前    · 
要出家的牙膏  ·  为什么面对男生也会脸红啊 - ...·  3 年前    · 
天涯  ·  查看堆外内存_浅蓝浅蓝-CSDN博客_art ...·  4 年前    · 
Code  ›  正则表达式匹配字符串中出现a,b,c三个字母各一次并且顺序任意 -
正则表达式
https://segmentfault.com/q/1010000038904363
精明的豆腐
2 年前
segmentfault segmentfault
注册登录
问答 博客 标签 活动
发现
✓ 使用“Bing”搜本站 使用“Google”搜本站 使用“百度”搜本站 站内搜索
注册登录
  1. 首页
  2. 问答
  3. 正则表达式
  4. 问答详情

正则表达式匹配字符串中出现a,b,c三个字母各一次并且顺序任意

头像
Clloz
138 6 21
发布于
2021-01-09
更新于
2021-01-09

如题,今天突然想到这么个题目,没想出来答案。请大神们指教一下。

正则表达式
阅读 3.2k
2 个回答
得票 最新
头像
GhostOfYou
4.7k 1 2 14
发布于
2021-01-09
更新于
2021-01-10
✓ 已被采纳

正向写这个正则太恶心了,需要枚举6种排序方式.但是,如果把你的要求反过来看,就是不能达成 abc三个字母必须出现且只能出现一次 的情况,就必然会满足以下的条件之一:

  • 没有出现 a
  • 没有出现 b
  • 没有出现 c
  • a 至少出现两次
  • b 至少出现两次
  • c 至少出现两次

只要出现以上的六种情况,那么必然就没有达成你的原始要求,那么正则如下:

^([^a]+|[^b]+|[^c]+|([^a]*a[^a]*){2,}|([^b]*b[^b]*){2,}|([^c]*c[^c]*){2,})$

ps. 这个正则如果匹配成功,就说明不符合要求

图示如下:
image.png

我不考虑字符串为空的情况哈,你要考虑自己加上.

头像
Bestime
4.7k 1 3 29
发布于
2021-01-09

一个正则太麻烦了,建议个组合判断,非要一个正则,就像下面这样麻烦

demo('abc') // true
demo('acb') // true
demo('bac') // true
demo('bca') // true
demo('cab') // true
demo('cba') // true
demo('cbab') // false
demo('cbabca') // false
 
推荐文章
胡子拉碴的斑马  ·  VIM 用正则表达式,非贪婪匹配,匹配竖杠,竖线, 匹配中文,中文正则,倒数第二列, 匹配任意一个字符 : - xxxxxxxx1x2xxxxxxx
3 月前
发呆的地瓜  ·  岁月不败美人,经典无惧岁月 | 南方周末
2 年前
侠义非凡的小蝌蚪  ·  【国机智骏GC1】国机智骏_国机智骏GC1报价_国机智骏GC1图片_参数_EV视界
3 年前
奔放的竹笋  ·  神十四成功出征!航天概念股达78只 25股总市值超百亿_神舟十四号3名航天员领命出征_武大靖送神十四航天员出征_现场:神舟十四号3名航天员领命出征
3 年前
要出家的牙膏  ·  为什么面对男生也会脸红啊 - 酸酸甜甜熊猫恋 - 包子漫画
3 年前
天涯  ·  查看堆外内存_浅蓝浅蓝-CSDN博客_arthas堆外内存分析
4 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
Code - 代码工具平台
© 2024 ~ 沪ICP备11025650号