Articles of 正则expression式

Nginx的位置正则expression式不匹配

以下一直在为我cachingcss和js: location ~ "^(.*)\.(min.)?(css|js)$" { expires max; } 结果: $ curl -I http://mysite.com/test.css HTTP/1.1 200 OK Server: nginx Date: Thu, 16 Jan 2014 18:55:28 GMT Content-Type: text/css Content-Length: 19578 Last-Modified: Mon, 13 Jan 2014 18:54:53 GMT Connection: keep-alive Expires: Thu, 31 Dec 2037 23:55:55 GMT Cache-Control: max-age=315360000 X-Backend: stage01 Accept-Ranges: bytes 我正在尝试为我的js / css使用10位数的unix时间戳获取版本设置,并且遇到与下面的有效正则expression式匹配的正则expression式问题。 location […]

nginx错误日志Grok模式

我有麻烦得到以下nginx错误日志消息parsing在grokdebugging器 。 我有一种感觉,我应该使用一个愚蠢的伎俩,但不知道它可能是什么。 2015/03/20 23:35:52 [error] 8#0:* 10241823在logging请求时,客户端:201.45.203.78服务器:$ domain,testing“/ www”存在失败(2:没有这样的文件或目录)请求:“GET / ritikapuri_” 到目前为止,这是我的Grok模式: (?<timestamp>%{YEAR}[./]%{MONTHNUM}[./]%{MONTHDAY} %{TIME}) \[%{LOGLEVEL:severity}\] %{POSINT:pid}#%{NUMBER}: %{GREEDYDATA:errormessage} client: %{IP:client} 这种模式让我到“服务器”部分,但我似乎无法得到其余的parsing,并不清楚为什么。 如果我使用另一个%{GREEDYDATA}模式抓取日志的结尾,它有时不会parsing与上面不匹配的日志,并给我一个_grokparsefailure。 最好的路线是使用if语句来捕获nginx中日志消息的不同变体吗? 我已经遵循包括这个方法,但不能让他们的工作。

如何格式化这个正则expression式,所以它将工作在fail2ban?

我刚刚在CentOS服务器上安装了fail2ban,以回应SSH蛮力企图。 fail2ban的sshd.conf文件中的默认正则expression式不匹配audit.log中的任何条目,这是SSH似乎logging所有连接尝试的地方,所以我试图添加一个匹配的expression式。 我想匹配的string如下所示: type=USER_LOGIN msg=audit(1333630430.185:503332): user pid=30230 uid=0 auid=500 subj=user_u:system_r:unconfined_t:s0-s0:c0.c1023 msg='acct="root": exe="/usr /sbin/sshd" (hostname=?, addr=<HOST IP>, terminal=sshd res=failed)' 正在尝试使用的正则expression式是: ^.*addr=<HOST>, terminal=sshd res=failed.*$ 我已经使用regextester.com和regexr来尝试构build正则expression式。 testing人员给了我这个正则expression式的匹配: ^.*addr=\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}, terminal=sshd res=failed.*$但是fail2ban-regex抱怨如果我不在正则expression式中使用<HOST>标签。 但是,使用^.*addr=<HOST>, terminal=sshd res=failed.*$给我0个匹配。 在这一点上,我完全卡住,我将不胜感激任何援助。 我在做什么错在正则expression式我想要使用?

是否有可能从apache LocationMatch指令获得匹配的正则expression式?

我想知道下面的代码应该工作: <LocationMatch "/(.*)([/])?(.*)"> Order allow,deny Allow from all AuthType Basic AuthName "Git" AuthUserFile /git/.htpasswd AuthGroupFile /git/.htgroup Require group $1 </LocationMatch> 我试图实现这个是要求基于第一个正则expression式variables的组。 因此,如果用户转到http://localhost/a-repository-name他必须在组a-repository-name中才能打开url。 出于某种原因,我不能得到这个代码的工作和Apache返回: Authorization of user **** to access /a-repository-name failed, reason: user is not part of the 'require'ed group(s). 我想这不符合Require group $1的正确variables。 这是正确的做法,或者我错过了什么?

通过正则expression式全局着色terminal

我知道许多程序使用颜色 – (vim,ack,color-l等等),但是仍然有很多情况下你被黑白的困住了。 有一些脚本会根据正则expression式来输出颜色(比如“做任何匹配的狗”红色“),但是这些脚本必须用pipe道调用 – 例如:”cat myfile | color dog red“,这对于任何事情都是没有用的互动。 我正在寻找的东西是挂钩terminal模拟器(或terminal,实际上是这样)和颜色与给定的正则expression式匹配的任何东西,独立于我正在使用的shell或程序。 如果这与ncurses一起工作,那也是非常棒的。 我有太多的黑白程序,如果我能指定一个关键字列表来突出显示/打印颜色,当它们出现或键入时,这将是非常好的。 我使用的可能使用GNOMEterminal的Guake控制台,我不知道GNOME是否已经有了这个function。

使用robocopy将多个文件夹复制到单个目的地

我正在寻找一个解决scheme,使用robocopy从一个目录复制几个文件夹到一个遥远的networking共享。 我想从包含数百个文件夹的目录中select几个文件夹,我不想使用正则expression式,但是这在robocopy中不起作用: c:\robocopy "c:\results\1319_TC1.*" "\\datastore\somefolder\"

正则expression式为sed抓多行或更好的方法?

我正在创build一个连接到服务器的脚本,并将输出转储到一个临时文件。 我想在脚本中使用sed来从临时文件中获取特定的信息。 输出将始终具有80个字符的虚线,然后是我想要的信息,然后是Disconnected语句。 我得到了一个正则expression式的工作,如果它只是一个单一的线,麻烦是我怎么分组换线? 正则expression式 -\{80\}[\r\n]*\(.*\)[\r\n]\{4\}Disconnected 文件 … ——————————————————————————– The information that I want to get can be a single line or multiple lines. Another line to grab. And this should be caught as well. Disconnected … 期望的输出 The information that I want to get can be a single line or multiple lines. Another line […]

修改fail2ban failregex以通过ssh匹配失败的公钥authentication

fail2ban不能识别失败的公钥sshlogin,我认为这可以通过修改/etc/fail2ban/filter.d/sshd.config的failregex来解决,以匹配下面一行: <date> <time> <server-hostname> sshd[25917]: Connection closed by <client-ip> [preauth] 但是我无法find一个正确的介绍如何正确修改failregex。 由于我不知道诸如^%(__prefix_line)s这样的variables^%(__prefix_line)s包含很难得到一个正常工作的正则expression式。 据我所知,最新版本0.9.1包含正确的“正在连接closures[preauth]”行,但我使用从Debian存储库fai2ban和0.9.1的configuration是不兼容的一个我有。

为什么这个正则expression式不能在linux上工作?

我不能说它在Windows上工作,但从我的理解这个正则expression式是正确的,我将如何写它(除了可能在^开始) 从http://www.velocityreviews.com/forums/showpost.php?p=382944&postcount=3 ^.+\.((jpg)|(gif)|(exe))$ 当我跑步 find -regex '^.+\.((jpg)|(gif)|(exe))$' 我的exe文件没有显示出来,当我写 find -regex '^.+\.exe$' 它确实。 为什么find -regex想使用()或(()|())? 我一直认为这一切都是有效的。

如何在HAproxy的ACL列表中匹配通配符主机?

我在我的haproxy.conf中有以下几行: acl valid_domains hdr(Host) -i mysite.com images.mysite.com docs.mysite.com admin.mysite.com redirect location http://mysite.com/invalid_domain if !valid_domains 我如何匹配任何子域名? 我试过了: acl valid_domains hdr(Host) -i *.mysite.com 和: acl valid_domains hdr(Host) -i [az]+.mysite.com …但都没有工作。 谢谢