我有一组条目,如下所示:
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”一词及其后的所有内容?
答案 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