如何解释这个正则表达式

时间:2014-08-19 22:26:08

标签: regex

我在解释这个表达式时遇到了很多麻烦,而且我真的很想念它。有人能帮助我吗?

  

^ (?: htaccess的|的access_log)[^](?:[。] [^ /?] )(:[〜]?)(:???[?]。 *)?$

我知道^意味着从行的开头开始,[^?]不匹配"?"我想,然后(?:)不确定这是做什么或如何解释其余的线。我认为htaccess | access_log意味着它的一个或语句,所以htacces或access_log。 [。] [^ /?]是一个。其次不是"?"但那么早期的[^?]意味着什么......

这匹配的例子是什么?

1 个答案:

答案 0 :(得分:3)

有很多explainers会为您分解正则表达式。

简而言之,character class [^ ]内的插入符号是否定运算符,意味着匹配字符类中的任何 NOT 。放置在左括号内的?:non-capturing group,它指定不要捕获该组,而是指定组表达式,|alternation operator

我建议您查看这些网站以获取正则表达式的基本用法。

正则表达式:

^                # the beginning of the string
[^?]             # any character except: '?'
(?:              # group, but do not capture:
  htaccess       #   'htaccess'
 |               #   OR
  access_log     #   'access_log'
)                # end of grouping
(?:              # group, but do not capture (optional):
  [.]            #   any character of: '.'
  [^/?]          #   any character except: '/', '?'
)?               # end of grouping
(?:              # group, but do not capture (optional):
  [~]            #   any character of: '~'
)?               # end of grouping
(?:              # group, but do not capture (optional):
  [?]            #   any character of: '?'
  .*             #   any character except \n (0 or more times)
)?               # end of grouping
$                # before an optional \n, and the end of the string