在斜杠之间提取字符串,但第二个斜杠可能不存在[重复]

Posted

技术标签:

【中文标题】在斜杠之间提取字符串,但第二个斜杠可能不存在[重复]【英文标题】:Extract String Between Slashes, But Second Slash May Not Exists [duplicate] 【发布时间】:2020-09-02 02:10:11 【问题描述】:

我试图弄清楚如何从表单中捕获的 URL 中提取用户名。我确实有下面的正则表达式,但问题是 第二个正斜杠可能不存在。以下是示例:

示例网址https://test.site.com/u/usernamehttps://test.site.com/u/username/pref/summary

我正在尝试提取username

当前正则表达式/u/(.*?)/

我上面的当前成功提取了username,但是只有在用户名后面还有一个/第二个/需要是可选的;它可能存在,也可能不存在,之后可能会有,也可能不会。

我只是找不到正确的正则表达式来使第二个 / 成为可选(最后使用 ? 没有帮助),但如果这有意义的话,并不是完全“可选”。

提前致谢!

【问题讨论】:

改成/u/([^/]*) 【参考方案1】:

/u/([^/]*) 将尽可能多地匹配/u/ 之后的非/ 字符。

它不会匹配prefsummary, 因为[^/] 匹配任何字符除了 /, 所以[^/]* 匹配一个字符串(尽可能长) / 以外的字符数。 考虑一下:如果您的模式是B[aeiou]* 你的输入是Beetles(或Beethoven), 它只会匹配Bee, 停在(之前)第一个不是元音的字符处。 同样,[^/]*/ 第一次出现(之前)处停止。

【讨论】:

谢谢 - 就是这样,但我不明白!这如何不捕获其他正斜杠之后的字符串,例如我的示例中的“pref”和“summary”? 感谢您的解释!现在有道理了!干杯。

以上是关于在斜杠之间提取字符串,但第二个斜杠可能不存在[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如果我只想提取第二个斜杠后的第二个,如何在大查询中使用 regex_extract?

SQL提取反斜杠之间的数字

PLSQL 在第 N 次和第 M 次出现字符之间选择 substr

将反斜杠更改为正斜杠会更改文件大小

javascript/jquery 向 url 添加斜杠(如果不存在)

文件路径中和\之间有什么区别