我已经用regexp做了很多“过滤”来从字符串中删除不想要的字符,这就是我所使用的:
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, '')但是,仍然存在一些hashtag持续存在的情况,例如在过滤之前:
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”被删除了。如何改进regexp以删除这个单词?谢谢。
发布于 2022-05-13 06:57:34
您的逻辑承认,哈希标签可能前面有一些字符,因此删除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);
https://stackoverflow.com/questions/72225507
复制相似问题