Ruby 包含负前瞻的正则表达式与整个字符串匹配

Ruby 包含负前瞻的正则表达式与整个字符串匹配,ruby,regex,Ruby,Regex,我有以下案文: Name: <% $person %> <& component &> 名称: 我正在尝试设计一个Ruby正则表达式,它将为我提供所有看起来不像或的东西 这是我使用消极前瞻的方法: (?!<&|<%)(.+\s*)(?!&>|%>) (?!) 但它返回整个字符串(已测试),而我希望它返回名称:也许您可以选择将字符串中介于或之间的所有内容替换为空字符串: 试试这个正则表达式: (?)-正向查

我有以下案文:

Name: <% $person %> <& component &>
名称:
我正在尝试设计一个Ruby正则表达式,它将为我提供所有看起来不像
的东西

这是我使用消极前瞻的方法:

(?!<&|<%)(.+\s*)(?!&>|%>)
(?!)

但它返回整个字符串(已测试),而我希望它返回
名称:

也许您可以选择将字符串中介于
之间的所有内容替换为空字符串:

试试这个正则表达式:

  • (?)
    -正向查找:文本开头或 “结束”标记(
    &>
    %>
  • (.+?)
    -这就是您要捕获的内容。注意
    +
    后面的
    不情愿的版本,防止“消费”整个剩余部分 文本的格式

  • (?=这就是我要说的。我相信正则表达式是用来匹配文本的。据我所知,即使可以这样使用,它们也不能很好地执行相反的操作。不,对不起,我不能替换字符串。我正在使用的工具不允许它(我正在使用Rouge构建语法荧光笔)有趣的是,要小心,如果它直接放在字符串的开头,它会匹配一个被标记包围的文本。除了一个2+字符序列之外,不可能与Ruby regex匹配。对于PCRE,可以使用
    (*SKIP)(*FAIL)
    ,并在Lucene中使用补码运算符,但Onigmo不支持这些操作。
    (?<=^|[&%]>)(.+?)(?=<[&%]|$)