与/,/ abc /,/ abc / efg /等组合的正则表达式语法

时间:2019-04-25 14:30:48

标签: regex

我不知道可以匹配以下示例的正则表达式:

  1. /
  2. / abc
  3. / abc /
  4. / abc / xxx
  5. / abc / efg /
  6. / abc / efg / xxx

我需要捕获/之间的每个变量。

示例:/ abc / efg / xxx应该返回:

  1. 变量1:abc
  2. 变量2:efg
  3. 变量3:xxx

注释:

  1. /之间的文本始终为字母数字
  2. 上述6个用例是我关注的唯一情况。

1 个答案:

答案 0 :(得分:1)

我没有找到一种比您所说的更干净的方法来完全解决您的问题:

^\/(?:(\w+)(?:\/(\w+)(?:\/(\w+))?)?)?((?<!\/)\/)?$

您可以在这里查看:https://regex101.com/r/FJuJ43/6

说明:

starts with a /: ^\/    
rest of unstored group is optional: (?: … )?    
may ends with a / unless there is another one just before: ((?<!\/)\/)?$
in the main group, first stored alphanum only subgroup: (\w+)
followed by another optional unstored subgroup, starting with a / and followed by another alphanum only stored subgroup: (?:\/(\w+) … )?
and ditto: (?:\/(\w+))?

这有效,创建了三个组。

但是我不能阻止最后一个字符为结尾/

/ aaa / bbb / ccc /也可以正常工作。如果可以忍受,那应该没事。

希望这会有所帮助。