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

jgwigjjp  于 2023-05-08  发布在  其他
关注(0)|答案(2)|浏览(86)

我正在尝试创建一个正则表达式,它可以接受以下任何一个例子:

|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次。
非常感谢。

cyej8jka

cyej8jka1#

根据你的描述:
我想拒绝任何|'不是'-','x'或' o ',并且这些字符的总和不等于8,并且此模式重复4次完成行。
下面的regex可能是你要找的:

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

分解,这是:

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

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

yfjy0ee7

yfjy0ee72#

如果我没理解错的话,你想要这样的东西:

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

你可以在这里看到它的作用:http://refiddle.co/2ecn

相关问题