Regex 提取斜杠之间的字符串,但第二个斜杠可能不存在

Regex 提取斜杠之间的字符串,但第二个斜杠可能不存在,regex,Regex,我试图找出如何从表单中捕获的URL中提取用户名。我有下面的正则表达式,但问题是第二个正斜杠可能不存在。以下是一些例子: 示例URL https://test.site.com/u/username https://test.site.com/u/username/pref/summary 我正在尝试提取用户名 当前正则表达式 /u/(.*)/ 我上面提到的当前一个成功地提取了用户名,但是仅当用户名后有另一个/时才有效。第二个/需要是可选的;它可能在那里,也可能不在那里,在那之后可能也可能不会有更

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

示例URL
https://test.site.com/u/username

https://test.site.com/u/username/pref/summary

我正在尝试提取
用户名

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

我上面提到的当前一个成功地提取了
用户名
,但是仅当用户名后有另一个
/
时才有效。
第二个
/
需要是可选的;它可能在那里,也可能不在那里,在那之后可能也可能不会有更多

我只是找不到使第二个
/
可选的正确正则表达式(在末尾使用
没有帮助),但如果这有意义的话,就不完全是“可选的”

提前谢谢

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

它将与
pref
summary
不匹配, 因为
[^/]
匹配除
/
以外的任何字符, 所以
[^/]*
匹配一个字符串(尽可能长) 除
/
以外的其他字符 考虑:如果您的模式是
B[aeiou]*
你的输入是《甲虫》(或《贝多芬》), 它将只匹配Bee, 在不是元音的第一个字符前停止
类似地,
[^/]*
在第一次出现
/

之前停止,将其更改为
/u/([^/]*)
谢谢-确实如此,但我不明白!这是如何不捕获超过其他正向斜杠的字符串的,比如我的示例中的“pref”和“summary”?谢谢您的解释!现在说得通了!干杯