Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 正则表达式问题_Regex_Regular Language - Fatal编程技术网

Regex 正则表达式问题

Regex 正则表达式问题,regex,regular-language,Regex,Regular Language,因此,我必须为下面的语言制作一个正则表达式,用于检查(a | b | c)*字符串是否以“abc”结尾。 因此,我制作了以下正则表达式: ((a|b|c)*((a|b)+|(a|c)+|b(b|c)+)) 这就是我的老师教我的方式,不管我如何测试它 通过进一步的研究,我了解到理论上它应该等同于以下正则表达式: ([abc]*([ab]+|[ac]+|b[bc]+)) 然而,这个网站对我的正则表达式做了一些有趣的事情,我不知道如何使用它。 那么我的语言的正则表达式是什么呢 我建议使用负查找模式

因此,我必须为下面的语言制作一个正则表达式,用于检查(a | b | c)*字符串是否以“abc”结尾。 因此,我制作了以下正则表达式:

((a|b|c)*((a|b)+|(a|c)+|b(b|c)+))
这就是我的老师教我的方式,不管我如何测试它 通过进一步的研究,我了解到理论上它应该等同于以下正则表达式:

([abc]*([ab]+|[ac]+|b[bc]+))
然而,这个网站对我的正则表达式做了一些有趣的事情,我不知道如何使用它。
那么我的语言的正则表达式是什么呢

我建议使用负查找模式()来检查字符串是否以某个序列结尾

^(?:a|b|c)*(?<!abc)$
or
(?:a|b|c)*(?<!abc)
^(?:a | b | c)*(?
处理器查找由
abc
组成的文本,并在找到最大字符串时检查末尾是否有
“abc”
。如果是,则丢弃最后一个字符并反复尝试,直到可以在以下步骤中继续


请参阅示例和

我建议使用负查找模式()检查字符串是否以某个序列结尾

^(?:a|b|c)*(?<!abc)$
or
(?:a|b|c)*(?<!abc)
^(?:a | b | c)*(?
处理器查找由
abc
组成的文本,并在找到最大字符串时检查末尾是否有
“abc”
。如果是,则丢弃最后一个字符并反复尝试,直到可以在以下步骤中继续


参见示例和

这里是Jan回答的替代解决方案:

^(?:a(?!bc$)|b|c)*$

它使用前看而不是后看,并且它匹配包含零个或多个“b”、零个或多个“c”、零个或多个“a”的完整行,前提是该“a”后面没有“bc”和行尾。

下面是Jan回答的另一个解决方案:

^(?:a(?!bc$)|b|c)*$

它使用向前看而不是向后看,并且它匹配包含零个或多个“b”、零个或多个“c”、零个或多个“a”的整行,前提是该“a”后面没有“bc”然后是行尾。

您刚刚用字符类替换了捕获组,这与这些模式匹配的字符类是等效的。谢谢,但我的正则表达式是正确的?在仔细检查后,我意识到我应该使用+而不是*所以它至少需要3个选项中的一个((a | b | c)*((a | b)+(a | c)+b(b | c)+)但它仍然将abc重新定义为我的正则表达式([abc]*([bc][abc]{2}|[abc][ac][abc]|[abc]{2}[ab])|[abc]{0,2})$
现在对于aabbcc,它没有显示匹配看到你只是用字符类替换了捕获组,这与这些模式匹配的部分是等效的。谢谢你,但我的正则表达式是正确的?经过仔细检查,我意识到我应该使用+而不是*所以它至少需要3个选项中的一个((a | b | c)*((a | b)+(a | c)+b(b | c)+)但是它仍然将abc重新定义为我的regexTry
^([abc]*([bc][abc]{2}}}[abc][ac][abc]{2}[ab]}[abc]{0,2}}$
,现在对于aabbcc,它没有显示匹配看到了吗