鉴于字母{a, b, c}
,如何创建一个简单的正则表达式,该表达式完全匹配符合以下条件的单词:
由于前一个逻辑含义(if-then关系),即使没有“aa”,字符串“cc”也会出现,反之则不然。
我正在寻找一种方法来实现这一点,使用这些语法元素(., *, +, ?, |, )
以及括号。
应该匹配的示例:
不应该匹配的内容:
我尝试了以下内容:a?b?(ba)*(ccaa)*(aacc)*c*b?
答案 0 :(得分:0)
不确定我是否应该回答这个,因为它的作业,但是这里......
首先,您要确定条款P:" string' aa'发生" 和Q:" string' cc'发生" 。然后,您将P -> Q
转换为!P v Q
。然后将其转换为由两部分组成的正则表达式:
^(((b|c)*(a(b|c)+)*a?)|(.*cc.*))$
第一部分否认任何' aa'如下所示:在开头允许任意数量的b
和c
(包括无),如果找到a
,则强制执行至少一个不同的字符它。 a
后跟非a
s可能会发生任意次。最后,我们还有a?
允许字符串以a
结尾,我们确定它之前没有a
,因为前两个组中没有一个以{结尾}结尾{1}}。
第二部分是微不足道的。
在此测试:http://rubular.com/r/mAPHO8bulo
请在此处查看:http://jex.im/regulex/...