考虑以下Ruby代码:
/(?<!big )dog/.match('I have a big dog.') # => nil
现在,我将启用自由间隔模式:
/(?x)(?<!big )dog/.match('I have a big dog.') # => #<MatchData "dog">
为什么会发生这种情况,如何启用自由间距模式而不会破坏我的负面观察?
答案 0 :(得分:3)
/(?x)(?<!big )dog/.match('I have a big dog.')
# ^
请注意,big
后面有一个空格。由于它是扩展模式,因此忽略空格。
您有some options:
\s
或\p{Space}
等模式。\
,即前面带有空格的空格
反斜杠。[ ]
等字符类。例如:
/(?x)(?<!big\s)dog/.match('I have a big dog.')
# => nil