已关闭,此问题需要更focused,目前不接受回答。
**想要改进此问题吗?**更新此问题,使其仅关注editing this post的一个问题。
11天前关闭。
Improve this question
使用Regex,我如何从一个字符串中提取子字符串ACB-R5TGDRSAuE76Tt1ZPa5qPv9cp23QLaJfni84B7MXrcI
,该字符串可以具有以下(url)格式之一:
https://lh3.googleusercontent.com/a-/ACB-R5TGDRSAuE76Tt1ZPa5qPv9cp23QLaJfni84B7MXrcI=s120-c-c0x00000000-cc-rp-mo-br100
https://lh3.googleusercontent.com/a/ACB-R5TGDRSAuE76Tt1ZPa5qPv9cp23QLaJfni84B7MXrcI=s120-c-c0x00000000-cc-rp-mo-br100
- 区别在于
/a/
,/a-/
前缀。
我自己也无法写出正确的正则表达式,我所做的最多就是这样:(?<=/a/)(.*?)=
但这并不能解决问题。
1条答案
按热度按时间owfi6suc1#
1.若要匹配前缀但在结果中忽略它,请使用lookbehind表达式(
?<=
),但是您只需要告诉它使用|
操作符匹配/a/
或/a-/
。另外,对特殊字符(如/
和-
)进行转义也很明智。所以你需要在它们前面加上\
来告诉Regex你想把它们当作普通字符来处理,所以正确的前缀匹配表达式是:(?<=\/a\/|a\-\/)
1.您不需要在
(.*?)
中使用?
,因为您知道ID中应该有一些字符。1.要匹配后缀(
=
)但在结果中忽略它,需要使用预视表达式(?=
):(?=\=)
最后一个正则表达式
(?<=\/a\/|a\-\/)(.*)(?=\=)
将给予要查找的子字符串。