我正在尝试创建一个捕获组,该捕获组仅捕获以下字符串中冒号后面的单词,例如: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
答案 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)
希望有帮助!