提取路径中的最后一次出现

时间:2017-11-28 13:36:44

标签: regex

我有一条路径,我需要提取3个字符的最后一个

aa-aaa/123/aaaa -> 123
aaa/123/abc -> abc
aaa/1234/abcd -> aaa
aaa -> aaa

这是我的 try

但是,如果有人有一个很好的正则表达式,那么我远非一个有趣的结果?

2 个答案:

答案 0 :(得分:4)

这一个完成了工作,你得到了第1组中的目录名称:

^(?:.+\/)*([^\/]{3})(?=\/|$)

<强>解释

^
  (?:       : non capture group
    .+      : 1 or more any character
    \/      : slash
  )*        : repeated 0 or more times
  (         : group 1
    [^\/]{3}: 3 non slash
  )         : end group 1
  (?=       : look ahead
    \/|$    : slash or end of line
  )         : end look ahead

答案 1 :(得分:2)

如果您可以使用捕获组,则应该为您执行此操作:

.*(\b\w{3}\b)

它将所有内容(.*)跳到最后三个字符序列(\b\w{3}\b),并将其捕获到组1中。

\b确保字边界\w{3}为三个字字(即a-zA-Z0-9)(它匹配路径中允许的大多数字符。如果您需要它匹配所有,则必须更具体地了解执行环境。

See it here at regex101