这是一个示例字符串
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/