我在解释这个表达式时遇到了很多麻烦,而且我真的很想念它。有人能帮助我吗?
^ (?: htaccess的|的access_log)[^](?:[。] [^ /?] )(:[〜]?)(:???[?]。 *)?$
我知道^意味着从行的开头开始,[^?]不匹配"?"我想,然后(?:)不确定这是做什么或如何解释其余的线。我认为htaccess | access_log意味着它的一个或语句,所以htacces或access_log。 [。] [^ /?]是一个。其次不是"?"但那么早期的[^?]意味着什么......
这匹配的例子是什么?
答案 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