在 Python 中,我可以这样做:
import re
regex = re.compile('a')
regex.match('xay',1) # match because string starts with 'a' at 1
regex.match('xhay',1) # no match because character at 1 is 'h'
但是在 Ruby 中,
match
方法似乎匹配位置参数之后的所有内容。例如,/a/.match('xhay',1)
将返回一个匹配项,即使该匹配项实际上从 2 开始。但是,我只想考虑从特定位置开始的匹配项。我如何在 Ruby 中获得类似的机制?我想像在 Python 中一样匹配从字符串中特定位置开始的模式。
最佳答案
下面使用 StringScanner
怎么样?
require 'strscan'
scanner = StringScanner.new 'xay'
scanner.pos = 1
!!scanner.scan(/a/) # => true
scanner = StringScanner.new 'xnnay'
scanner.pos = 1
!!scanner.scan(/a/) # => false
关于Ruby 正则表达式匹配从特定位置开始,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24803018/