Javascript正则表达式模式捕获
我想编写一个Javascript正则表达式来查找任何给定单词的键(页码) 例如,在下面的段落中Javascript正则表达式模式捕获,javascript,regex,Javascript,Regex,我想编写一个Javascript正则表达式来查找任何给定单词的键(页码) 例如,在下面的段落中 Key for Chota = 1 Key for Seven = 1 & 2 Key for wonder =3 (就像发现所有页面上都有一个单词一样) 我写了下面的表达式,但它不能正常工作 /(?:\|\|)(\d+)(?=\|\|)(?=(.|\n)*wonder)/img; 问题是(.|\n)*可能会超出下一个|n |。您需要避免这种情况,通常是通过在重复中嵌套一个负前瞻: /
Key for Chota = 1
Key for Seven = 1 & 2
Key for wonder =3
(就像发现所有页面上都有一个单词一样)
我写了下面的表达式,但它不能正常工作
/(?:\|\|)(\d+)(?=\|\|)(?=(.|\n)*wonder)/img;
问题是(.|\n)*
可能会超出下一个|n |
。您需要避免这种情况,通常是通过在重复中嵌套一个负前瞻:
/\|\|(\d+)(?=\|\|(?:(?!\|\|\d+\|\|)[\s\S])*wonder)/ig;
请注意,我将(.|\n)
替换为[\s\s]
,因为前者不会超过其他换行字符,如\r
和一些Unicode字符[\s\s]
是匹配“任意字符”的标准方法(事实上,在Javascript中,您也可以使用[^]
(而不是无字符))
还要注意,m
修饰符在这里是不相关的,因为它只影响^
和$
的匹配方式(两者都不是正则表达式的一部分)
至于表达式,在使用重复中的每个字符之前,我们先进行前瞻性检查,确保它没有标记|n| |
的开始
您不需要正则表达式。请给我们一个html示例,显示匹配时要返回的密钥。@DerekHenderson什么html?m.buettner你太棒了。特别感谢你的解释和工作演示你介意再帮我一次吗?在同一个示例中,是否也可以执行以下操作?我还想捕获搜索词周围的2个词(在右边和左边)。我有一个用于此的工作正则表达式(?:[^\\.\s\r\n]*[\s\r\n]+{0,2}(?:[^\s\r\n]*)想知道(?:[^\s\r\n]+[^\.\s\r\n]*){0,2}现在我想结合这两个正则表达式来获得页码和周围的文本ex.3,我想知道你怎么做
/\|\|(\d+)(?=\|\|(?:(?!\|\|\d+\|\|)[\s\S])*wonder)/ig;