0

有人可以解释一下这个正则表达式吗?

^(?=.*prodCode=).*$
4

3 回答 3

9

这个不错的正则表达式解释器

NODE                     EXPLANATION
--------------------------------------------------------------------------------
  ^                      the beginning of the string
--------------------------------------------------------------------------------
  (?=                    look ahead to see if there is:
--------------------------------------------------------------------------------
  .                      any character except \n
--------------------------------------------------------------------------------
  prodCode=              'prodCode='
--------------------------------------------------------------------------------
  )                      end of look-ahead
--------------------------------------------------------------------------------
  .                      any character except \n
--------------------------------------------------------------------------------
  $                      before an optional \n, and the end of the string

编辑

由于问题文本中的正则表达式已更改,因此解释中的倒数第二行将更改为:

--------------------------------------------------------------------------------
  .*                     any character except \n (0 or more times (matching
                         the most amount possible))
--------------------------------------------------------------------------------
于 2012-07-20T07:43:15.793 回答
1

从行开始位置搜索之前的任何符号prodCode=(?=)意味着只是检查位置不匹配。因此,在您的情况下,如果该行中存在字符串,any symbol + prodCode=那么我们匹配整行,如果不存在则返回 false。

于 2012-07-20T07:44:00.970 回答
1

如果字符串中有prodCode=任何位置并匹配完整的字符串,则匹配。

另一种编写方式(粗略地说,滥用方法返回值作为正则表达式匹配)是

if (s.indexOf("prodCode=") != -1)
    return s;
于 2012-07-20T07:44:22.500 回答