从图像路径中提取 id

Tho*_*ann 2 regex

我想从 url/filepath 中提取一个 id

路径可以是:

images/tJpwYL9baWgH56USKZwqTz7QM9g1_48x48.png 或者 https://.../.../images/tJpwYL9baWgH56USKZwqTz7QM9g1_150x150.png

我想提取唯一的 ID(在本例中为tJpwYL9baWgH56USKZwqTz7QM9g1)到目前为止我想出了以下表达式: ([^\/]+[_$]) 这包括 _ ,所以我得到tJpwYL9baWgH56USKZwqTz7QM9g1_

我怎样才能做到这一点并排除_?

Wik*_*żew 5

您可以使用

([^\/]+)_\d+x\d+\.png
[^\/]+(?=_\d+x\d+\.png)
Run Code Online (Sandbox Code Playgroud)

看到这个这个正则表达式演示。细节:

  • ([^\/]+) - 捕获组 1:一个或多个字符,而不是 /
  • _ - 下划线
  • \d+x\d+\.png- 一位或多位数字、x一位或多位数字、.png字符串
  • (?=_\d+x\d+\.png) - 正向前瞻,要求上述模式立即出现在当前位置的右侧(因此,匹配的文本不会添加到匹配值中)

此外,您可能会考虑使用更简单的模式,如

([^\W_]+)_
[^\W_]+(?=_)
Run Code Online (Sandbox Code Playgroud)

看到这个这个模式演示。该[^\W_]+模式匹配一​​个或多个字母或数字,(?=_)匹配紧跟一个_字符的位置。

  • 尽管效率较低,但我会选择“[^\/]+(?=_\d+x\d+\.png)”,这样OP就不必处理捕获组。https://regex101.com/r/NOcfvv/1 (2认同)