在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中所做的那样。
5条答案
按热度按时间vfh0ocws1#
用于匹配字符串中位置
x+1
处的a
--〉DEMO
svgewumm2#
下面使用
StringScanner
如何?agyaoht73#
Regexp#match
有一个可选的第二个参数pos
,但它的工作方式类似于Python的search
方法,不过你可以检查返回的MatchData
是否从指定的位置开始:r7knjye24#
杨帆稍微延伸了一下@sunbabaphu回道:
wvt8vs2t5#
这个问题的答案是
\G
。当调用
String#match
的双参数版本(采用起始位置)时,\G
匹配regex匹配的起始点。