如何匹配可选字符序列或不同字符?
例如:
我从匹配字母"KQkq“开始
这些按顺序排列,但可选,所以"K?Q?k?q?“
然而,输入要么是这四个字母中的一个,要么是"-",所以我尝试了“(K?Q?K?q?q-)
这适用于字母,但与"-“不匹配。
如果字母不是可选的,我会使用“(KQkq)”,这很好。
我试过很多不同的东西,比如把字母放在一个组“((K?Q?K?q?)\-)”但是我找不到表达我所需要的东西的方法。
*注:正如我在问题中所述:我正在按顺序匹配"KQkq“,但可以选择”。序列意味着它们一个接一个地出现,因此" KQkq“是有效的,"KkQq”是无效的,"kqKQ“或"kkkk”或其他与序列KQkq不匹配的东西也是无效的。可选意味着字符可能存在也可能不存在。因此,"KQkq“是有效的,"K”或"Kk“或"Qkq”也是有效的。字符类(对于那些不知道的字符)将匹配类中没有顺序感的任何字符。因此,KQkq{1,4}确实会匹配"KQkq“和"Qkq”,但是它也会匹配"KKKK“、"qkQK”、"qqqq“,这些都是无效的。
发布于 2014-12-24 04:49:37
发布于 2014-12-24 09:57:07
您的正则表达式运行良好,为了捕获破折号,您只需锚定正则表达式:
^(K?Q?k?q?|-)$没有锚点,第一部分K?Q?k?q?匹配任何东西,包括空字符串和-。
发布于 2014-12-23 21:23:43
你试过做([KQkq]|-)甚至([KQkq]|[-])吗?
示例:Regex示例
https://stackoverflow.com/questions/27628151
复制相似问题