Regex-模式匹配重复的字符串

时间:2017-04-08 06:54:40

标签: java regex

我想要一个匹配“+ - + - + - + - + - .......”的模式,“+ - ”可以多次出现,但它们应该在一起...不喜欢“+++ - + ---”

我尝试了“[+ - ] +”,但没有指定+和 - 是连续的

2 个答案:

答案 0 :(得分:2)

方括号([])指定一个字符类。你想要的是使用非捕获组:

(?:\+-)+

如果你想捕获它,你可以把它变成一个捕获组(\+-)+

答案 1 :(得分:1)

考虑以下样本:

+++--+---
-+-+-
-+-+-+
-+-+-+-
------
++++++
+-+-+-
+-+-+-+
+-+-+-+-
--++--++-
++--++--+
+-5
-+-A

Vallentin的模式没有任何锚点,并且会匹配字符串中的任何内容。 (?:\+-)+

字符串可以以它开头的相同字符结束吗?

如果没有,请将其更改为:

^(?:\+-)+$

如果可以:

对于" +仅启动": 使用模式访问完整匹配结果:^(\+(?:-|$))+$

对于" +和 - 开始"的可能性: 使用模式访问完整匹配结果:^(?:([+-])(?!\1))+$

比较所有三种模式@ this demo that defaults to Vallentin's pattern