在 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/

10-13 02:18