【问题标题】:Regex global match for Nodejs not workingNodejs的正则表达式全局匹配不起作用
【发布时间】:2014-11-15 14:47:00
【问题描述】:

我已经尝试了一百万次,并且到处搜索!我不能让它工作。 我正在尝试提取推文的文本并查找全局匹配,它仅在绝对匹配时才有效,但如果我在它旁边添加一个词则无效。仅供参考,我正在尝试在 NodeJS 中执行此操作。

例如:

var userTweet = tweet.text;
var gold = userTweet.match(/#gold/g);
console.log(gold);

console.log(userTweet);

if (userTweet == gold) {

        console.log('got it'); // only grabs it if it exactly matches the tweeted string
    }
    else {
        console.log('not getting it'); // if any other word besides 'gold' is present         doesn't work at all
    }
});

我想补充一点,我正在 Twit 流中编写我的代码。

并放在这个函数里面:

stream.on('tweet', function(tweet) { 


}

我基本上希望跟踪一个关键词和一个特定的用户。但是,当我尝试跟踪特定单词时,它会覆盖我要跟踪的用户并跟踪使用该关键字的每个用户。

--- 对于任何面临同样问题的人,我最终只使用了 twitter-text 模块。虽然它也有它的问题。

【问题讨论】:

    标签: javascript regex node.js twitter express


    【解决方案1】:

    您可以改用 /#gold.*?\b/g 之类的正则表达式:

    > '#gold'.match(/#gold.*?\b/g) [ '#金子' ] > '#gold #asdf #golden'.match(/#gold.*?\b/g) ['#gold','#gold'] > '耶#gold #golddigger woohoo!'.match(/#gold.*?\b/g) ['#gold','#golddigger']

    您可能还想将/i 添加到修饰符中,以便找到#GOLD#GoLd 等。

    【讨论】:

    • 是的,这也不行,我开始认为是 Twitter 限制了我这样做。我正在尝试以正则表达式的方式进行操作,因为我无法“关注”和“跟踪”一个特定用户。 “track”参数优先于“follow”。
    • “不起作用”是什么意思?也许您可以在原始问题中添加一些示例输入和预期输出,以帮助阐明您要查找的内容。
    • 当我输入“#gold”时它会看到,但是当我输入“#gold suubve”时它根本看不到它。我已经编辑了我的问题。
    • 我开始工作了,我需要解析我得到的推文数据。 Twitter-text 是一个很好的模块。还有很多其他可用的!
    猜你喜欢
    • 1970-01-01
    • 2011-04-05
    • 1970-01-01
    • 2013-11-23
    • 2014-09-03
    • 1970-01-01
    • 1970-01-01
    • 2023-01-22
    • 1970-01-01
    相关资源
    最近更新 更多