如何提取带有斜线约束的字符串的一部分?

时间:2019-05-28 23:28:10

标签: regex regex-lookarounds regex-group regex-greedy

你好,我有一些这样命名的字符串:

BURGERDAY / PPA / This is a burger fest

我已经尝试过使用正则表达式来获取它,但是我似乎无法正确使用它。

输出应该只获取This is a burger fest的最后一个字符串(没有第一个空格)

2 个答案:

答案 0 :(得分:3)

在这里,我们可以在到达最后一个斜杠后跟随任意数量的空格来捕获所需的输出:

.+\/\s+(.+)

其中(.+)收集我们希望返回的内容。

const regex = /.+\/\s+(.+)/gm;
const str = `BURGERDAY / PPA / This is a burger fest`;
const subst = `$1`;

// The substituted value will be contained in the result variable
const result = str.replace(regex, subst);

console.log(result);

DEMO

建议

根据revo的建议,我们还可以使用此表达式,它会更好:

\/ +([^\/]*)$

根据Bohemian的建议,根据我们希望使用的语言,可能不需要逃脱正斜杠,这对JavaScript来说适用:

.+/\s+(.+)

此外,我们假设在目标内容中没有正斜杠,否则我们可以根据其他可能的输入/场景更改约束。

答案 1 :(得分:0)

注意:这是一个蟒蛇般的答案(我的错)。我会保留它的价值,因为它可能适用于多种语言

另一种方法是将其拆分,然后重新加入。

data = 'BURGERDAY / PPA / This is a burger fest'

这里分四个步骤:

parts = data.split('/')   # break into a list by '/'
parts = parts[2:]         # get a new list excluding the first 2 elements
output = '/'.join(parts)  # join them back together with a '/'
output = output.strip()   # strip spaces from each side of the output

简洁明了:

output= str.join('/', data.split('/')[2:]).strip()

注意:在某些情况下,我认为str.join(..., ...)比'...'。join(...)更易读。但这是相同的呼叫。