正则表达式匹配010101

fas*_*ava -3 regex

是否可以使用正则表达式来匹配交替0和1的字符串?它可以以0或1结尾,长度是任​​意的.

eld*_*his 11

所有可能的二进制字符串的正则表达式将是^(0|1)*$.这包括空字符串.不包括您将使用的空字符串^(0|1)+$.

这就是你问的问题吗?

编辑:如果您正在寻找交替0和1的情况,您也可以这样做:

^1?(01)*0?$应该匹配每个可能的组合.如果您希望字符串始终以0开头,那么您可以使用^(01)*0?$(包括空字符串)或^(01)+0?$(不包括空字符串).

  • @drachenstern:我认为无论如何我都不能构建许多其他的可能性,所以我的答案就是留在这里.除非OP回来并提供一些合理的细节,否则...... (2认同)

Mic*_*sen 7

是的,这是可能的.(?:01)*0?将允许任意数量的"01",可选地后跟0,假设具有非捕获组的类似PCRE的正则表达式.

请注意,这包括空字符串.如果您想要至少一个字符(0)或至少一个"01"组,那么也可以使用0(?:10)*1?和处理它们(?:01)+0?.

  • @javaguy:通常在正则表达式中,您可以使用`()`创建一个捕获组,然后在正则表达式引擎查看您的字符串后,您可以获得该组匹配的部分.但是,有时您实际上并不需要或想要捕获它.为此,你可以使用一个非捕获组,你可以通过在组的开头放置`?:`来获得,就像在我的回答中一样. (2认同)