首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >匹配零或零和或

匹配零或零和或
EN

Stack Overflow用户
提问于 2014-12-23 21:20:05
回答 5查看 617关注 0票数 0

如何匹配可选字符序列或不同字符?

例如:

我从匹配字母"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“,这些都是无效的。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2014-12-24 04:49:37

代码语言:javascript
复制
^(?:(?:K?Q?k?q?)|-)$

尝试this.See演示。

https://regex101.com/r/gQ3kS4/2

票数 1
EN

Stack Overflow用户

发布于 2014-12-24 09:57:07

您的正则表达式运行良好,为了捕获破折号,您只需锚定正则表达式:

代码语言:javascript
复制
^(K?Q?k?q?|-)$

没有锚点,第一部分K?Q?k?q?匹配任何东西,包括空字符串和-

票数 1
EN

Stack Overflow用户

发布于 2014-12-23 21:23:43

你试过做([KQkq]|-)甚至([KQkq]|[-])吗?

示例:Regex示例

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27628151

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档