从包含主题标签的字符串中删除一个单词
Delete a word from a string which contains hashtags
我已经用正则表达式做了很多“过滤”以从字符串中删除不需要的字符,这就是我正在使用的:
var regexpHashtag = new RegExp(/(?:^|\s)(?:#)([a-zA-Z\d]+)/g)
var regexpUrl = new RegExp(/(?:https?|ftp):\/\/[\n\S]+/g)
var regexpEmoji = new RegExp(/([\u2700-\u27BF]|[\uE000-\uF8FF]|\uD83C[\uDC00-\uDFFF]|\uD83D[\uDC00-\uDFFF]|[\u2011-\u26FF]|\uD83E[\uDD10-\uDDFF])/g)
var regexpQuotes = new RegExp(/['"]+/g)
tweetText = tweetText.replace(regexpHashtag, '')
tweetText = tweetText.replace(regexpUrl, '')
tweetText = tweetText.replace(regexpEmoji, '')
tweetText = tweetText.replace(regexpQuotes, '')
但在某些情况下主题标签仍然存在,例如在过滤之前:
Pogledajte prizore koje je naš fotograf danas zabilježio na Ilidži (FOTO) ☀️☀️☀️#Setnja #Ilidza #Malaaleja
之后:
Pogledajte prizore koje je naš fotograf danas zabilježio na Ilidži (FOTO) ️️️#Setnja
“#Setnja”这个词是导致我出现问题的原因,是不是因为这些标签“#Ilidza #Malaaleja”被删除了,所以单词前有表情符号。我怎样才能改进我的正则表达式来删除这个词?谢谢
你的逻辑承认主题标签前面可能有一些字符,所以删除 LHS 上的空白边界检查:
var regexpHashtag = new RegExp(/#[a-zA-Z\d]+/g)
var regexpUrl = new RegExp(/(?:https?|ftp):\/\/[\n\S]+/g)
var regexpEmoji = new RegExp(/([\u2700-\u27BF]|[\uE000-\uF8FF]|\uD83C[\uDC00-\uDFFF]|\uD83D[\uDC00-\uDFFF]|[\u2011-\u26FF]|\uD83E[\uDD10-\uDDFF])/g)
var regexpQuotes = new RegExp(/['"]+/g)
tweetText = "Pogledajte prizore koje je naš fotograf danas zabilježio na Ilidži (FOTO) ☀️☀️☀️#Setnja #Ilidza #Malaaleja";
tweetText = tweetText.replace(regexpHashtag, '')
tweetText = tweetText.replace(regexpUrl, '')
tweetText = tweetText.replace(regexpEmoji, '')
tweetText = tweetText.replace(regexpQuotes, '')
console.log(tweetText);
我已经用正则表达式做了很多“过滤”以从字符串中删除不需要的字符,这就是我正在使用的:
var regexpHashtag = new RegExp(/(?:^|\s)(?:#)([a-zA-Z\d]+)/g)
var regexpUrl = new RegExp(/(?:https?|ftp):\/\/[\n\S]+/g)
var regexpEmoji = new RegExp(/([\u2700-\u27BF]|[\uE000-\uF8FF]|\uD83C[\uDC00-\uDFFF]|\uD83D[\uDC00-\uDFFF]|[\u2011-\u26FF]|\uD83E[\uDD10-\uDDFF])/g)
var regexpQuotes = new RegExp(/['"]+/g)
tweetText = tweetText.replace(regexpHashtag, '')
tweetText = tweetText.replace(regexpUrl, '')
tweetText = tweetText.replace(regexpEmoji, '')
tweetText = tweetText.replace(regexpQuotes, '')
但在某些情况下主题标签仍然存在,例如在过滤之前:
Pogledajte prizore koje je naš fotograf danas zabilježio na Ilidži (FOTO) ☀️☀️☀️#Setnja #Ilidza #Malaaleja
之后:
Pogledajte prizore koje je naš fotograf danas zabilježio na Ilidži (FOTO) ️️️#Setnja
“#Setnja”这个词是导致我出现问题的原因,是不是因为这些标签“#Ilidza #Malaaleja”被删除了,所以单词前有表情符号。我怎样才能改进我的正则表达式来删除这个词?谢谢
你的逻辑承认主题标签前面可能有一些字符,所以删除 LHS 上的空白边界检查:
var regexpHashtag = new RegExp(/#[a-zA-Z\d]+/g)
var regexpUrl = new RegExp(/(?:https?|ftp):\/\/[\n\S]+/g)
var regexpEmoji = new RegExp(/([\u2700-\u27BF]|[\uE000-\uF8FF]|\uD83C[\uDC00-\uDFFF]|\uD83D[\uDC00-\uDFFF]|[\u2011-\u26FF]|\uD83E[\uDD10-\uDDFF])/g)
var regexpQuotes = new RegExp(/['"]+/g)
tweetText = "Pogledajte prizore koje je naš fotograf danas zabilježio na Ilidži (FOTO) ☀️☀️☀️#Setnja #Ilidza #Malaaleja";
tweetText = tweetText.replace(regexpHashtag, '')
tweetText = tweetText.replace(regexpUrl, '')
tweetText = tweetText.replace(regexpEmoji, '')
tweetText = tweetText.replace(regexpQuotes, '')
console.log(tweetText);