【问题标题】:What does "(?! ... )" do in a Perl regex? [duplicate]"(?! ... )" 在 Perl 正则表达式中有什么作用? [复制]
【发布时间】:2016-07-27 01:17:08
【问题描述】:
 $str = "doctor_who:eeh1234LMNOP51234.123";

我想匹配doctor_who:ee 而不是doctor_who:eeh;

 $str =~ m/doctor_who:e(?!eh)[epx];

我想知道正则表达式在括号中的作用;

【问题讨论】:

  • 请学习正确格式化您的帖子。你应该阅读Markdown Editing Help
  • $str =~ m/doctor_who:e(?!eh)[epx]; 不会编译。请复制并粘贴您的真实代码到任何问题中
  • (?!PAT) 的意思是“后面没有PAT”,或者更准确地说,“PAT 在这个位置不匹配”。

标签: regex perl


【解决方案1】:

如果目标字符串中的以下字符与封闭的正则表达式模式匹配,则 (?! ... ) 之类的组件将无法匹配。这被称为负前瞻

不清楚您是否需要帮助来形成符合您要求的模式,或者您是否遇到了您不理解的模式

如果我在写它,我会看你的规范

我想匹配 'doctor_who:ee' 而不是 'doctor_who:eeh'

你想匹配doctor_who:ee后面没有h,这是

/doctor_who:ee(?!h)/

【讨论】:

    猜你喜欢
    • 2014-06-01
    • 2013-06-08
    • 2016-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-07
    • 2014-08-26
    • 1970-01-01
    相关资源
    最近更新 更多