给出以下内容:
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)?
但是它没有按预期工作
答案 0 :(得分:2)
您可以使用
^[^:]+(?::\b(asc|desc)\b)?$
请参见regex demo
详细信息
^
-字符串的开头[^:]+
-除:
之外的1个或多个字符(?::\b(asc|desc)\b)?
-的可选出现
:
-冒号\b(asc|desc)\b
-一个asc
或desc
作为整个单词$
-字符串的结尾。