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

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

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

我正在尝试提取username

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

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

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

提前致谢!

【问题讨论】:

  • 改成/u/([^/]*)

标签: regex


【解决方案1】:

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

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

【讨论】:

  • 谢谢 - 就是这样,但我不明白!这如何不捕获其他正斜杠之后的字符串,例如我的示例中的“pref”和“summary”?
  • 感谢您的解释!现在有道理了!干杯。
猜你喜欢
  • 1970-01-01
  • 2015-07-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多