如何对apache正则表达式中的特定单词使用正向前瞻

时间:2014-06-03 04:47:00

标签: regex apache lookahead

如何对apache正则表达式中的特定单词使用正向前瞻。

示例:

在java正则表达式中,我有以下正则表达式^(?=.*\bLOCAL\sSERVICE\b)

apache正则表达式中的等效正则表达式是什么?在apache正则表达式中是否有任何正面的预测,相当于?=

1 个答案:

答案 0 :(得分:1)

简而言之:Apace使用PCRE正则表达式引擎,这是最全功能的引擎之一。您可以使用与Java相同的前瞻。

存在细微差别,但它们对您的模式无关紧要。

供参考:Java和PCRE中模式的逐个标记比较

  • 在字符串^
  • 的开头处断言位置
  • 断言下面的正则表达式可以匹配,从这个位置开始(正向前瞻)(?=.*\bLOCAL\sSERVICE\b)
    • Java 8以不同的方式解释此部分.*
      • 匹配任何不是换行符的单个字符(换行符,回车符,下一行,行分隔符,段落分隔符).*
        • 在零和无限次之间,尽可能多次,根据需要回馈(贪婪)*
    • PCRE 8.34-8.35 UTF-32以不同方式解释此部分.*
      • 匹配任何非换行符(换行符)的单个字符.*
        • 在零和无限次之间,尽可能多次,根据需要回馈(贪婪)*
    • Java 8:断言字边界处的位置(位于前面或后面的位置,但不是两个字母,数字或下划线)\b
    • PCRE 8.34-8.35 UTF-32:断言字边界处的位置(前面或后面的位置,但不是两个字母,数字或下划线)\b
    • 字面匹配字符串“LOCAL”(区分大小写)LOCAL
    • 匹配单个字符“空格字符”(ASCII空格,制表符,换行符,回车符,垂直制表符,换页符)\s
    • 字面匹配字符串“SERVICE”(区分大小写)SERVICE
    • Java 8:断言字边界处的位置(位于前面或后面的位置,但不是两个字母,数字或下划线)\b
    • PCRE 8.34-8.35 UTF-32:断言字边界处的位置(前面或后面的位置,但不是两个字母,数字或下划线)\b