正则表达式捕获组不包括

时间:2018-08-08 05:26:15

标签: ruby regex

我正在尝试创建一个捕获组,该捕获组仅捕获以下字符串中冒号后面的单词,例如:tsearch。双冒号后面的单词不应被捕获。当前的正则表达式正在捕获:tsearch::int

我是否需要使用否定环视?不知道该怎么办。

示例字符串:

":tsearch + some_word::int"
":trigram + some_word::date"
":dmetaphone + some_word::int"
"some_word::date + :tsearch"
"some_word::type + :dmetaphone"
"some_word::str + :a_word"

当前正则表达式:

/:(\w*)/

Regexr链接 https://regexr.com/3tk8t

1 个答案:

答案 0 :(得分:1)

您的示例可能是负向后看的一个很好的用例,不幸的是,在JavaScript中它们尚未得到完全支持。

可能的解决方案是通过反转字符串然后应用负向超前来“模拟”负面的向后看。

示例:

const string1 = ":trigram + some_word::date";

const reverseString = string => string.split('').reverse().join('');

const reversedString = reverseString(string1);

const matches = reversedString.match(/\w+:(?!:)/g).map(reverseString);

console.log(matches)

希望有帮助!

相关问题