排除特定字词及其后的所有内容

时间:2019-07-03 05:47:47

标签: javascript regex

我有一组条目,如下所示:

indexpath.row

我要删除“ via”及其后的所有内容。其后的格式如下:AmirAShabani Neda Pouya Na via @gif Roozbeh Barsin Neda via @sticker ,其中via @word只是字母和可选的下划线。因此输出如下:

word

我尝试了this regex

AmirAShabani
Neda
Pouya Na
Roozbeh
Barsin
Neda

但是输出是:

([a-zA-Z ]+)(via @[a-zA-Z_ ])?

我可以理解为什么会这样,但是我不知道如何解决。如何排除“ via”一词及其后的所有内容?

4 个答案:

答案 0 :(得分:2)

尝试在\s+via.*$上进行正则表达式替换:

var input = "AmirAShabani\nNeda\nPouya Na via @gif\nRoozbeh\nBarsin\nNeda via @sticker";
var output = input.replace(/\s*via.*$/mg, '');
console.log(output);

答案 1 :(得分:1)

我假设编程语言是python。通过添加适当的语言标签,可以使问题更具体。

>>> li = ['AmirAShabani', 'Pouya Na via @gif' , 'Neda via @sticker', 'Roozbeh', 'Barsin']
>>> for i in range(0, len(li)):
...     li[i] = re.sub(r'\ via\ @\w+', '', li[i])
...
>>> print(li)
['AmirAShabani', 'Pouya Na ', 'Neda ', 'Roozbeh', 'Barsin']

答案 2 :(得分:1)

您可以使用此正则表达式:

/ via @[a-z_]*/gmi

并替换为空字符串。

var str = `AmirAShabani
Neda
Pouya Na via @gif
Roozbeh
Barsin
Neda via @sticker`;
var result = str.replace(/ via @[a-zA-Z_]*/gmi, "");
console.log(result);

它将查找您所说的内容-单词via,后跟一个空格,后跟@,后跟字母或下划线。我添加了一个前导空格,只是它与单词中的via不匹配。

答案 3 :(得分:0)

const input = "AmirAShabani\nNeda\nPouya Na via @gif\nRoozbeh\nBarsin\nNeda via @sticker";  
const output = input.split('\n').map(item => {
    const index = item.indexOf("via");
    return index > 0 ? item.substring(0, index - 1): item;
});
console.log(output.join('\n'));

结果:

AmirAShabani
Neda
Pouya Na
Roozbeh
Barsin
Neda