Regex SyntaxError:(irb):4:向后看(正向向后看/向前看)模式无效

Regex SyntaxError:(irb):4:向后看(正向向后看/向前看)模式无效,regex,ruby,regex-lookarounds,gsub,regexp-replace,Regex,Ruby,Regex Lookarounds,Gsub,Regexp Replace,我试图编写一个正则表达式替换模式,以替换散列中的一个数字,如下所示: some_dict={ 测试:123 } 这样就可以捕获并替换123个 (?原因是Ruby的Onigom正则表达式引擎不支持无限宽的查找模式 在一般情况下,包含诸如*、+或{x,}等量词的肯定lookbehind通常可以用消费模式替换,后跟\K: /(?:|\t*[a-zA-Z0-9|]+:|\t+\K\d+(?=*)/ #^^^ ^^ 但是,您甚至不需要这种复杂的模式

我试图编写一个正则表达式替换模式,以替换散列中的一个数字,如下所示:

some_dict={
测试:123
}
这样就可以捕获并替换123个


(?原因是Ruby的Onigom正则表达式引擎不支持无限宽的查找模式

在一般情况下,包含诸如
*
+
{x,}
等量词的肯定lookbehind通常可以用消费模式替换,后跟
\K

/(?:|\t*[a-zA-Z0-9|]+:|\t+\K\d+(?=*)/
#^^^                         ^^  
但是,您甚至不需要这种复杂的模式。
(?=.*)
是多余的,因为它不需要任何东西,
*
甚至匹配一个空字符串。如果当前位置的左侧有空格或制表符,则会触发正向查找模式。正则表达式等于

.gsub(/(?<=[ \t])\d+/, "321")

.gsub(/(?如果有任何可能在
123
之后出现一个数字,比如在注释中,我是否也需要添加一个前瞻?@notacorn正向前瞻用于要求特定的字符串上下文。
*
匹配一个空字符串,那么您的正向前瞻是多余的。仅供参考:用于测试Ruby regexp