斯堪纳里奥
我必须从组合字符串中获取子字符串。比赛条件:
字符串以“section1:”开头
捕获的字符串可以是空格分隔或破折号分隔的字母数字值列表
如果捕获的字符串以特定后缀 ('-xx') 结尾,则从捕获的字符串中排除后缀。
例子
section1:ypsilon : 第 1 部分匹配,获取 'ypsilon'
section1:ypsilon zeta:第 1 部分匹配,获取“ypsilon zeta”
section1:ypsilon-zeta : 第 1 部分匹配,获取 'ypsilon-zeta'
section1:ypsilon-xx : 第 1 部分匹配,抓取 'ypsilon',排除 '-xx'
section1:ypsilon zeta-xx:第 1 部分匹配,抓取 'ypsilon zeta',排除 '-xx'
section1:ypsilon-zeta-xx:第 1 部分匹配,抓取 'ypsilon-zeta',排除 '-xx'
section2:ypsilon:第 2 节不匹配
到目前为止的解决方案
^section1:([a-zA-Z0-9\- ]+)(\-xx)?$
这个想法是获得第 1 组,而第 2 组是可选的。 演示。
问题
不幸的是,后缀与 group1 定义匹配,因为它是一个带有破折号的字母字符串。所以生成的捕获字符串不排除后缀。
有什么线索吗?