如何在第二和第三个fowardslash之间取任何值

时间:2018-05-15 11:35:05

标签: regex

我正在使用正则表达式语法来从for splitlash(bu)中取出字符串中的第3个值。

/globalTracking/shipment/bu/number

我尝试了各种组合,但在某些特定情况下我仍然没有得到任何价值。允许的值是字符串和短划线。 因为我尝试了这种语法:

\/(?!\w+\/)(?!\w+\/)(?:\/[a-zA-Z\-]+\/)

仅适用于" bu"包含破折号。例如测试府。但是对于纯粹的字符串,例如" test"它找不到它。

请告诉您正确的语法?

非常感谢,Reddy

2 个答案:

答案 0 :(得分:3)

尝试使用正则表达式:

(/+(.*?)){3}/

以下是在python中实现的代码:

x = '/globalTracking/shipment/bu/number'
re.search('(/+(.*?)){3}/',x).group(2)

输出

'bu'

答案 1 :(得分:1)

您可以在此处使用capturng组:

^

请参阅regex demo

<强>详情

  • / - 字符串的开头
  • (?:[^/]+/){2} - 斜线
  • [^/]+ - 一个量化的非捕获组,匹配两次重复
    • / - /
    • 以外的一个或多个字符
    • ([^/]+) - 斜线
  • / - 捕获第1组:{{1}}以外的一个或多个字符