首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Regex匹配abc:abc

Regex匹配abc:abc
EN

Stack Overflow用户
提问于 2015-04-07 13:01:46
回答 3查看 1.1K关注 0票数 1

我想捕捉:

代码语言:javascript
复制
sometext
sometext:description
  • 如果输入以sometext:description的形式出现,我想同时捕获sometextdescription (我可以使用([a-z]+):([a-z]+)实现这一点)
  • 如果输入是sometext形式的,我只想捕获sometext (我可以使用([a-z]+))

我如何将这两个表达式组合在一起?当且仅当输入为a:b形式时,我将两者都捕获,否则只捕获a

我试过:

代码语言:javascript
复制
((([a-z]+):([a-z]+)) | ([a-z]+))

但它不能捕捉到'abcde'

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-04-07 13:03:41

将第二种模式放入非捕获组中,并将其作为可选模式。

代码语言:javascript
复制
([a-z]+)(?::([a-z]+))?

演示

票数 3
EN

Stack Overflow用户

发布于 2015-04-07 13:02:40

您可以使用以下正则表达式:

代码语言:javascript
复制
 ^(\w+)(?:\:(\w+))?$

它将匹配两个字符串。见示例

票数 2
EN

Stack Overflow用户

发布于 2015-04-07 13:04:31

代码语言:javascript
复制
([a-z]+):([a-z]+)|([a-z]+)

您的regex正在为me.See演示工作。

https://regex101.com/r/sJ9gM7/62

(a-z+):(+))

代码语言:javascript
复制
                 ^^^^

这些空间造成了问题。

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

https://stackoverflow.com/questions/29492318

复制
相关文章

相似问题

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