与可选第二组匹配的正则表达式

时间:2020-05-26 13:59:00

标签: regex

给出以下内容:

1. foo
2. foo:asc
3. foo:desc
4. foo:
5. foo:burp

我想匹配一个字符序列和一个可选的第二个序列,仅当以:为前缀且为asc或desc时

我应该匹配:

1. group 0 = foo, group 1 = <empty>
2. group 0 = foo, gorup 1 = asc
3. group 0 = foo, gorup 1 = desc
4. should fail
5. should fail

我尝试过:

  [^:]+:?(\basc\b|\bdesc\b)?

但是它没有按预期工作

1 个答案:

答案 0 :(得分:2)

您可以使用

^[^:]+(?::\b(asc|desc)\b)?$

请参见regex demo

详细信息

  • ^-字符串的开头
  • [^:]+-除:之外的1个或多个字符
  • (?::\b(asc|desc)\b)?-的可选出现
    • :-冒号
    • \b(asc|desc)\b-一个ascdesc作为整个单词
  • $-字符串的结尾。