Ruby正则表达式:负匹配

我想知道是否可以在整个单词上使用否定匹配,所以像[^(.*?)]这样的东西会匹配 (和包括) ...之间的文本之外的所有内容...

我正在考虑使用否定前瞻,但我认为这不会起作用,因为我还需要检查开场

当然,我可以使用正面正则表达式,然后从原始文本中减去匹配,但我正在寻找更“优雅”的解决方案。

thx任何帮助

String#split作为否定匹配。 它返回一个与正则表达式不匹配的任何部分的数组。

 'XXXXXXXXYYYYYYYZZZZZZZZ'.split(%r|.*?|) # => ['XXXXXXX', 'ZZZZZZZZ'] 

如果想要它回到一个字符串,只需join

 'XXXXXXXXYYYYYYYZZZZZZZZ'.split(%r|.*?|).join # => 'XXXXXXXZZZZZZZZ' 

整个问题是它不会消耗任何输入。 如果要匹配除模式之外的所有内容,则表示您希望匹配该模式的前缀和后缀。 要匹配后缀,您可能想要消耗—并扔掉 – 您不想要的模式。 但负面的前瞻不消耗。