以下语言的正则表达式

标签 regex

字母表上的字符串{a,b,c,d},其中没有 b 紧跟 a 并且没有 c立即通过 d

这是我想出的,但在某些情况下它失败了。 你能告诉我我做错了什么吗?

a*(a|d)*(b(c|d|b)+)*(c(a|b|c)+)*(d(a|b|c|d)+)*

最佳答案

使用否定的前瞻性非常简单:

^(?!.*(ba|cd))[a-d]*

解释:

  • (ba|cd) 表示或者 bacd
  • ^(?!.*(ba|cd)) 表示从一开始就向前看(不消耗)(^),应该 是输入 (.*) 中的任何位置,bacd
  • [a-d]* 表示任意数量的 a,b,c 或 d

关于以下语言的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9122358/

相关文章:

PHP 去除字符串中的所有括号

javascript - 正则表达式以字母开头和结尾,允许逗号和破折号

r - R grep:是否有AND运算符?

html - Sublime Text 正则表达式在多个 html 文件中查找/替换

html - 我想在 jmeter 中忽略带有正则表达式的空格

正则表达式匹配除特定路径之外的所有 https URL

regex - 如何使用 grep 和正则表达式从字符串中提取数字

php - 正则表达式 : get what is outside of the brackets

java - 如果标签重复,如何将信息与 html 标签内的正则表达式匹配?

javascript - 使用javascript匹配几个字符后的非数字