从图像路径中提取id
我想从 url/filepath 中提取一个 id
路径可以是:
images/tJpwYL9baWgH56USKZwqTz7QM9g1_48x48.png 或者 https://.../.../images/tJpwYL9baWgH56USKZwqTz7QM9g1_150x150.png
我想提取唯一的 ID(在本例中为tJpwYL9baWgH56USKZwqTz7QM9g1)到目前为止我想出了以下表达式:
([^/]+[_$])
这包括 _ ,所以我得到tJpwYL9baWgH56USKZwqTz7QM9g1_
我怎样才能做到这一点并排除_?
回答
您可以使用
([^/]+)_d+xd+.png
[^/]+(?=_d+xd+.png)
看到这个和这个正则表达式演示。细节:
([^/]+)- 捕获组 1:一个或多个字符,而不是/_- 下划线d+xd+.png- 一位或多位数字、x一位或多位数字、.png字符串(?=_d+xd+.png)- 正向前瞻,要求上述模式立即出现在当前位置的右侧(因此,匹配的文本不会添加到匹配值中)
此外,您可能会考虑使用更简单的模式,如
([^W_]+)_
[^W_]+(?=_)
看到这个和这个模式演示。该[^W_]+模式匹配一个或多个字母或数字,(?=_)匹配紧跟一个_字符的位置。
- Albeit less efficient I would opt for `[^/]+(?=_d+xd+.png)` so that OP doesn't have to deal with capture groups. https://regex101.com/r/NOcfvv/1