在字符串的可选部分中为强制符号匹配的正则表达式是什么。
例如,abcd
将与RE匹配,但如果我添加:
,则结果字符串将不会匹配,除非我之后添加字母abcd:efg
因此,可选部分是:
向前,此可选部分中的强制符号是:
本身。
abcd:efg:hijk
也需要匹配。
更新:
我试过这个^([a-z]|_)*(:[a-z]|_)*$
,但它没有按预期工作。
答案 0 :(得分:1)
您应该包含更多示例和反例,但这应该足够接近您的目标:
^[a-z_]+(:[a-z_]+)*$
这是test。
^([a-z]|_)*(:[a-z]|_)*$
正则表达式的问题在于它只匹配每个:
后的一个字母。 a:b:c:d
matches but not a:b:c:de
最后,请注意(:[a-z]|_)
是:
它与冒号后跟下划线不匹配!
答案 1 :(得分:0)
我更喜欢正面看法的正则表达式。这也使得更容易对匹配的部分进行分组。它首先匹配第一个字符串,然后匹配所有后面的字符串,前面带有“:”
([a-z_]*)((?<=:):[a-z_])?
答案 2 :(得分:-1)
您的问题是,您需要知道如何表达长度超过单个字符的选项。试试这个:
^abcd(:efg)?$
abcd
和efg
代替你真正想要的东西。