【问题标题】:Regex to store a word before and after in javascript正则表达式在javascript中存储一个单词之前和之后
【发布时间】:2016-05-09 18:01:45
【问题描述】:

我正在编写一个 selenium 脚本。因此,在字符串“1 - 8 of 8 items”中。我必须找到单词“of”之前的数字和单词“of”之后的数字将其存储在两个变量中并检查它是否相等。

因此,首先我使用正则表达式“of\s+\b(\w+)\b”获取“of”之前的值,并使用正则表达式“(\S+)\s*of”获取“of”之后的值.我面临的问题是,当我使用这个正则表达式时,结果带有“of”这个词(8 of 8)。我可以使用什么正则表达式来获取“of”(8,8)之前和之后的值,而不包括“of”这个词。这是使用javascript。

【问题讨论】:

    标签: javascript regex selenium regex-lookarounds


    【解决方案1】:

    这个正则表达式会告诉你of之前的号码:

    "1 - 7 of 8 items".match(/\d+(?=\s+of\s+)/)
    

    【讨论】:

    • 这个答案帮助我更多地使用 "(/\d+(?=\s+of\s+)/)" 找到前 8 个和 (/\d+(?=\s+items\ s+)/) 找到第二个 8. 谢谢
    • 当然 - 单独匹配并不能保证正则表达式之间匹配的文字的位置。 IE。没有真正的前后。这样做是一个概念上的错误。
    • @sln,谢谢。我明白你的意思,但在这种特定情况下,文本不太可能改变,因为它可能是一个寻呼机。因此,只有独特的词,我看不出积极的展望在哪里可能是错误的或概念上的错误。我可能错了,所以请随意提供一个示例或一些文档的链接。
    • 哦,文档。我在回答中提供了我的文档。但是,我不知道目标文本是在哪里或如何生成的。我确实知道,如果它不重要,你会看到很多垃圾表达。我想念塑料前一天。
    【解决方案2】:

    我不是正则表达式专家,但我试过了。

    var findings  = "1 - 8 of 8 items 1 - abc of ghi items".match(/\w+ of \w+/g);
    var collection = [];
    findings.forEach(function(item){
        var words = item.split(' ');
        collection.push({first: words[0], second: words[2]});
    });
    
    console.log(collection);
    

    【讨论】:

      【解决方案3】:

      您可以将字符串拆分为非数字:

      var ar = "1 - 8 of 8 items".split(/[^\d]+/)
      

      给了

      Array [ "1", "8", "8", "" ]
      

      现在您可以比较数组的第二个和第三个元素

      ar[1] == ar[2]
      

      【讨论】:

        【解决方案4】:

        '1 - 8 of 8 items'.match(/of\s+\b(\w+)\b/)[1] 给出第一个8

        '1 - 8 of 8 items'.match(/(\S+)\s*of/)[1] 给出第二个8

        另类

        我会这样写:

        '1 - 8 of 8 items'.match(/(\d+) of/)[1] 第一个。

        '1 - 8 of 8 items'.match(/of (\d+)/)[1] 第二次。

        【讨论】:

        • 当我在正则表达式测试器中尝试您的答案时,它显示“/”是未转义分隔符的错误
        • 这很奇怪。我通过将它们粘贴到萤火虫中再次检查它们,并且没有错误。
        【解决方案5】:

        单独做是没有用的,它会给出错误的结果。

        同时查找两者。 (\d+)\s+of\s+(\d+).
        之前在捕获组 1 中,之后在捕获组 2 中。

        进行搜索。如果您不知道如何访问捕获组,请阅读。

        【讨论】:

        • 好的,我会检查的。谢谢
        猜你喜欢
        • 2018-01-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-03-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多