正则表达式组匹配(如果存在)

时间:2014-12-31 04:56:13

标签: ruby regex

我的输入字符串是:

/234243/source_path/a/b/c.test

或类似的东西:

/234243/source_path/a/b/c.test/check_w123

我希望正则表达式匹配以sourcecheck开头的子字符串,其结果如下:

  • sourcesource_path/a/b/c.test/
  • checkcheck_w123

使用最后一组中没有/(?<source>source.*)(?<check>check.*)/的{​​{1}}等正则结构。

我的正则表达式是:

?

我的结果是:

  • /(?<source>source.*)(?<check>check.*)?/ source
  • source_path/a/b/c.test/check_w123check

2 个答案:

答案 0 :(得分:2)

只需将第一个源组中的.*转换为非贪婪形式即可。并且不要忘记添加行锚的结束。

(?<source>source.*?)(?<check>check.*)?$

DEMO

答案 1 :(得分:0)

(?<source>source.*?(?!.*\/))(?<check>check.*)?

试试这个。看看演示。

https://regex101.com/r/rU8yP6/11