如何使用字符类和重复模式或组创建正则表达式?

时间:2015-07-26 23:34:51

标签: regex

我正在尝试制作一个接受以下任何示例的正则表达式:

|x-x-x-x-|x-x-x-x-|x-x-x-x-|x-x-x-x-|
|x-------|--------|x-------|--------|
|--------|x-------|--------|x-------|
|-xx---x-|-xxxx-x-|--------|ooooooo-|
|xo--oo--|--------|xo------|--------|
|--------|x-------|--------|x-------|

到目前为止,这就是我所拥有的:

\|([\-|x|o]{9}\|){4}

我不想用“x-x-x-x- |”组成一组同样,但可能是每个“( - | x | o)”。如果你注意到“| ... |”中只有8个字符我应该改为8次重复吗?在regex网站上显示它会重复8次。

非常感谢。

2 个答案:

答案 0 :(得分:1)

根据您的描述:

  

我想拒绝“|”之间的任何内容不是' - ','x'或'o',并且这些字符的总和不等于8,并且此模式重复4次完成该行。

以下正则表达式可能正是您所寻找的:

\|([-xo]{8}\|){4}

细分,这是:

  • [-xo] - 与-xo
  • 之一匹配的字符类
  • [-xo]{8} - 与字符类匹配的8个字符
  • [-xo]{8}\| - 8个字符后跟|
  • ([-xo]{8}\|){4} - 8个字符后跟|,正好是

最后,开头的\|与初始|匹配。您可能需要在正则表达式的开头和结尾添加锚点(^和/或$),具体取决于您的使用方式。

答案 1 :(得分:0)

如果我理解正确,你需要这样的东西:

\|(([-x]-){4}\|){4}

您可以在此处看到它:http://refiddle.com/2ecn