Ruby String:如何从定义的位置匹配Regexp

我想仅从定义的位置匹配来自ruby字符串的正则表达式。 那个位置之前的比赛对我不感兴趣。 而且,我想要\A来匹配这个位置。

我找到了这个解决方案

 code[index..-1][/\A[a-z_][a-zA-Z0-9_]*/] 

这匹配字符串code中位置index的正则表达式。 如果匹配不完全在位置index ,则返回nil

有没有更优雅的方法来做到这一点(我想避免用第一个切片创建临时字符串)?

谢谢

您可以在正则表达式中使用^.{#{index}} 。 不知道这是不是你想要的,因为我完全不理解你的问题。 你可以用测试的字符串添加一个例子吗? 你听说过Rubular吗? 测试正则表达式的好方法。

如果我正确理解你的问题,你可以这样做:

 code.match(/^.{#{index}}your_regex_here/) 

index变量将放在正则表达式中。 当index = 4 ,它将检查从头开始是否有4个字符。 然后它将检查您自己的正则表达式,并且只有在您的正则表达式有效时才返回true。 我希望它有所帮助。 祝好运。

编辑

如果您想获得正则表达式的匹配值:

 code.scan(/^.{#{index}}([a-z_][a-zA-Z0-9_]*)/).join 

它将匹配的结果(在括号内)放入一个数组中,并将其连接成一个String。