Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 正则表达式捕获组不包括_Ruby_Regex - Fatal编程技术网

Ruby 正则表达式捕获组不包括

Ruby 正则表达式捕获组不包括,ruby,regex,Ruby,Regex,我正在尝试创建一个捕获组,该组只捕获冒号后面的单词,例如:tsearch,在下面的字符串中。不应捕获双冒号后面的单词。当前正则表达式正在捕获:tsearch、:、和:int 我是否需要使用负面观察?不知道该怎么办 示例字符串: ":tsearch + some_word::int" ":trigram + some_word::date" ":dmetaphone + some_word::int" "some_word::date + :tsearch" "some_word::type +

我正在尝试创建一个捕获组,该组只捕获冒号后面的单词,例如: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链接

您的示例可能是负面外观落后的一个很好的用例,遗憾的是,在JavaScript中它们还没有得到完全支持

一个可能的解决方案是通过反转字符串,然后应用负lookahead来模拟负lookback

例如:

常量string1=:三元+一些单词::日期; const reverseString=string=>string.split.reverse.join; const reversedString=reverseStringstring1; const matches=reversedString.match/\w+:?!:/g、 地图反向限制;
console.logmatches您能举更多的例子吗?也许只是要求比赛在开始的时候开始,可能在中间,对不起,我会增加一些例子。好的,所以如果你想匹配:TSook,从你的例子中,为什么不只是有一个正则表达式:tSook?请解释您试图匹配的内容与rest@Fralcon,为什么不使用:tsearch作为regexAre的组捕获您是否试图捕获第一个和最后一个单词?嗨,Rodrigo,谢谢您的回答。我不知道为什么我的问题会列出它是用于javascript的,但我实际上使用的是ruby。Ruby支持负面lookbehind。编辑:我认为javascript标记是为这个问题自动生成的,或者我不小心添加了它而不是ruby。