加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

正则表达式 – 正则表达式不包含101

发布时间:2020-12-13 21:54:08 所属栏目:百科 来源:网络整理
导读:我 came across正则表达式不包含101如下: 0 ? 1 ? 0 ? +(1+00+000) ? +(0 + 1 + 0 + ) ? 我无法理解作者如何提出这个正则表达式.所以我只想到了不包含101的字符串: 01000100 我似乎上面的正则表达式不匹配上面的字符串.但我不确定.所以尝试转换为等效的pcr
我 came across正则表达式不包含101如下:

0?1?0?+(1+00+000)?+(0+1+0+)?

我无法理解作者如何提出这个正则表达式.所以我只想到了不包含101的字符串:

01000100

我似乎上面的正则表达式不匹配上面的字符串.但我不确定.所以尝试转换为等效的pcre正则表达式on regex101.com,但也失败了(因为可以看出我的正则表达式甚至不匹配包含单个1的字符串.

我的翻译有什么问题?上面的正则表达式确实正确吗?如果不是正确的正则表达式是什么?

阅读regex101右侧选项卡中的解释,它告诉你你的正则表达式做什么(我认为你误解了列表操作符的作用),列表操作符([)中,其他字符如(不再是元字符所以表达式[(0 * 1 * 0 *)[1(00)(000)]将等同于[01()* [],这意味着它匹配0或1或(或)或[

正则表达式的正确翻译0 * 1 * 0 *(100 000)*(0 1 0)*

将如下:

^((?:0*1*0*)|(?:1|00|000)*|(?:0+1+0+)*)$

regex101

Debuggex Demo

您的正则表达式[(0 * 1 * 0 *)[1(00)(000)] *(0 1 0)*]的作用是什么:

[(0 * 1 * 0 *)[1(00)(000)] * – >匹配任何字符0,(,),*,[零次或多次后跟

(0 1 0)* – >匹配模式0 1 0 0或更多次后跟
] – >匹配角色]

所以你的表达相当于

[([] 01](0 1 0)*]这不是匹配不包含101的字符串的正则表达式

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读