正则表达式删除倒数第二个斜杠之前的所有内容

正则表达式删除倒数第二个斜杠之前的所有内容

这是一个示例字符串

https://www.facebook.com/pages/Something/976313416535/

Something哪个正则表达式可以从该字符串中提取“ ”?

sub(".*[/@]", "", x) 

将删除最后一个斜杠之前的所有内容,但如何删除倒数第二个斜杠之前的所有内容?

答案1

这个正则表达式将会找到“某些东西”。

^.*\/(.*)\/.*\/$

替换为

\1

它正在努力https://regex101.com/适用于所有(PCRE(PHP)、ECMAScript、(JavaScript)、Python、Golang),但它拒绝在记事本 + 查找替换中工作。

答案2

我不懂 r 语言,但这里有一个适合你的 PCRE 正则表达式(至少在regex101),它匹配路径中的倒数第二项(即Something

^.+/\K[^/]+(?=/[^/]+/)

解释:

^           # beginning of string
  .+        # 1 or more any character
  /         # a slash
  \K        # forget all we have seen until this position
  [^/]+     # 1 or more non slash
  (?=       # start lookahead, zero-length assertion to make sure we have after:
    /       # a slash
    [^/]+   # 1 or more non slash (the string wanted)
    /       # a slash
  )         # end lookahead

答案3

这个正则表达式

/(.*\/)([^/]*)(\/[^/]*\/)$/m 

会发现:

https://www.facebook.com/pages/ (group 1)
Something (group 2)
/976313416535/ (group 3)

你可以用任何你想要的东西来替换它。在 Javascript 中:

const regex = /(.*\/)([^/]*)(\/[^/]*\/)$/m;
const str = `https://www.facebook.com/pages/Something/976313416535/`;
let m = str.replace(regex,"$1whatever_you_want$3");
console.log(m); 

//Output - https://www.facebook.com/pages/whatever_you_want/976313416535/

您可以在此处看到它的工作原理Regex101并在这里结束比赛Regex101

相关内容