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