Regex 如何获取第二个和第三个值之间的任何值

Regex 如何获取第二个和第三个值之间的任何值,regex,Regex,我正在与正则表达式语法斗争,因为它从forwardslash-bu分割的字符串中获取第三个值 /globalTracking/shipment/bu/number 我尝试了各种组合,但在某些特定情况下,我仍然没有得到一个值。允许的值是字符串和破折号。 因此,我尝试了以下语法: \/(?!\w+\/)(?!\w+\/)(?:\/[a-zA-Z\-]+\/) 这仅适用于bu包含破折号的情况。e、 g.测试bu。但如果是纯字符串,比如测试,它将无法找到它 你能告诉我正确的语法吗 非常感谢,Redd

我正在与正则表达式语法斗争,因为它从forwardslash-bu分割的字符串中获取第三个值

/globalTracking/shipment/bu/number
我尝试了各种组合,但在某些特定情况下,我仍然没有得到一个值。允许的值是字符串和破折号。 因此,我尝试了以下语法:

\/(?!\w+\/)(?!\w+\/)(?:\/[a-zA-Z\-]+\/)
这仅适用于bu包含破折号的情况。e、 g.测试bu。但如果是纯字符串,比如测试,它将无法找到它

你能告诉我正确的语法吗


非常感谢,Reddy

尝试以下正则表达式:

/+.{3}/

以下是用python实现的代码:

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

'bu'

尝试以下正则表达式:

/+.{3}/

以下是用python实现的代码:

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

'bu'

您可以在此处利用capturng组:

^/(?:[^/]+/){2}([^/]+)

细节

^-字符串的开头 /-斜杠 ?:[^/]+/{2}-一个量化的非捕获群,匹配两次重复的 [^/]+-一个或多个字符,而不是/ /-斜杠 [^/]+-捕获组1:一个或多个字符,而不是/
您可以在此处利用capturng组:

^/(?:[^/]+/){2}([^/]+)

细节

^-字符串的开头 /-斜杠 ?:[^/]+/{2}-一个量化的非捕获群,匹配两次重复的 [^/]+-一个或多个字符,而不是/ /-斜杠 [^/]+-捕获组1:一个或多个字符,而不是/
您仅在“向前看”时才禁止使用chars这个词。移除这两个\w+\/lookaheads。为什么不通过/拆分并获得数组[3]@WiktorStribiżew如果我删除它们,我将一无所获,如果我也删除前导\/并且只保留?:\/[a-zA-Z\-]+\/那么我将获得两个值:全局跟踪和bu。这并不重要。使用lookarounds只获取匹配值的方法太脆弱了。如果你需要获得第三部分,你只需要捕获它:请用语言或工具标记你的问题。你只允许使用“向前看”来禁止单词chars。移除这两个\w+\/lookaheads。为什么不通过/拆分并获得数组[3]@WiktorStribiżew如果我删除它们,我将一无所获,如果我也删除前导\/并且只保留?:\/[a-zA-Z\-]+\/那么我将获得两个值:全局跟踪和bu。这并不重要。使用lookarounds只获取匹配值的方法太脆弱了。如果你需要获得第三部分,你只需要捕获它:请用语言或工具标记你的问题。