【发布时间】:2012-11-20 12:23:26
【问题描述】:
我需要编写一个正则表达式,它可以检测一个只包含字符 x、y 和 z 的字符串,但其中的字符与相邻字符不同。
这是一个例子
xyzxzyz = 通过
xyxyxyx = 通过
xxyzxz = 失败(重复 x)
zzzxxzz = 失败(相邻字符重复)
我认为这会起作用 ((x|y|z)?)*,但它似乎不起作用。有什么建议吗?
编辑
请注意,我正在寻找一个不允许向前看或向后看操作的答案。唯一允许的操作是交替、连接、分组和闭包
【问题讨论】:
-
为什么
((x|y|z)?)*不起作用?你想让它做什么不做什么?你不能只说“它不起作用”。 -
如果这是计算机科学类的问题,要求您为语法编写正则表达式,那么您应该说明正则表达式只能由交替、连接、分组和闭合组成的要求( *),因为在实际使用中正则表达式有更多的语法,允许一个简单的解决方案。
-
@AndyLester:显然可以匹配重复字符的字符串。
-
@nhahtdh 这是一个计算机科学问题,只允许上述操作。如果它是真正的语法,我会很好地使用许多在线提供示例的资源来执行此操作,但是如果不向前看和向后看操作,我无法真正想到任何可以做到的事情
-
@MZimmerman6:你应该编辑你的问题以反映这一事实——人们只会假设你可以使用任何你想要的东西。