我想仅从定义的位置匹配来自ruby字符串的正则表达式。在那个位置之前的比赛对我不感兴趣。此外,我希望\A
能够匹配此职位。
我找到了这个解决方案:
code[index..-1][/\A[a-z_][a-zA-Z0-9_]*/]
这匹配字符串index
中位置code
的正则表达式。如果匹配不完全位于index
位置,则返回nil
。
有更优雅的方法吗(我想避免用第一个切片创建临时字符串)?
由于
答案 0 :(得分:2)
您可以在正则表达式中使用^.{#{index}}
。不知道那是不是你想要的,因为我完全不理解你的问题。你可以用测试的字符串添加一个例子吗?你听说过Rubular吗?测试正则表达式的好方法。
如果我正确理解你的问题,你可以这样做:
code.match(/^.{#{index}}your_regex_here/)
index
变量将放在正则表达式中。当index = 4
时,它将检查从头开始是否有4个字符。然后它将检查您自己的正则表达式,并且只有在您的正则表达式有效时才返回true。我希望它有所帮助。祝你好运。
修改强>
如果您想获得正则表达式的匹配值:
code.scan(/^.{#{index}}([a-z_][a-zA-Z0-9_]*)/).join
它将匹配的结果(在括号内)放入一个数组中并将其连接成一个字符串。