如果 url 的前 5 位数字是数字,我需要在 nginx 中设置一个位置参数。
site.com/12345/ or site.com/12345
Run Code Online (Sandbox Code Playgroud)
但我似乎一辈子都无法得到正确的正则表达式。
这些都不起作用。
location ^/([0-9]) { }
location ^/(\d\d\d\d\d) {}
location /(\d\d\d\d\d) {}
Run Code Online (Sandbox Code Playgroud) 我有一个很长的域名,所以我决定把它改成一个更短、更友好的域名。但是由于我有很多子域(实际上,我有一个子域通配符),我想保留子域,同时只更改域部分。所以,我制定了以下规则:
server {
listen 80;
server_name ~^(\w+)\.olddomain\.com$;
rewrite ^ $scheme://$1.doma.in$request_uri? permanent;
}
Run Code Online (Sandbox Code Playgroud)
我已经阅读了很多其他问题,这个片段解决了这个问题。但是对我来说,Nginx 总是重定向到.domain.in,没有任何子域。我错过了什么?我已经针对 regex101 测试了正则表达式并且示例工作正常,Nginx 似乎无法重定向它。
我试图用正则表达式匹配所有以 /newsletter/ 开头的路径,除了一个 (/newsletter/one)。到目前为止我所拥有的:
location ~ ^/newsletter/(.*)$ {
// configuration here
}
Run Code Online (Sandbox Code Playgroud)
这匹配所有以 /newsletter/ 开头的路径。
如何为路径 /newsletter/one 设置例外?
我正在寻找字面上具有大于字符(“>”)后跟空格后跟反斜杠字符(“\”)的行,即具有以下内容的行:> \
我认为转义会允许这样做,并且对于比它更大的:
$ ack-grep "\> "
返回包含“>”的行。
但是当我也尝试逃避反斜杠时,我得到:
$ ack-grep "\> \\"
ack-grep: 无效的正则表达式 '\> \':
正则表达式 m/\> / 中的尾随 \
在 Unix shell(使用正则表达式)上提取子字符串的最简单方法是什么?
简单的意思:
更新
我意识到正则表达式本身与简单性相冲突,因此我选择了最简单的一种cut作为所选答案。我很抱歉含糊不清的问题。我更改了标题以更准确地表示此 QA 的当前状态。
在 Bash 下使用 执行备份时rsync,我试图排除顶级目录中的所有点文件和隐藏目录,但不排除其他目标目录中的那些。例如:
/copyme.c
/.dontcopythisfile
/.dontcopythisdirectory/or_its_contents
/directory/.butcopymetoo
Run Code Online (Sandbox Code Playgroud)
rsync -a --include=".includeme" --exclude=".*" . DEST无法复制子目录中所需的点文件,但诸如此类的变体--exclude="./.*"也失败。
建议?这是否需要过滤规则而不是更简单的规则--exclude?
如何将所有定向到 user-*@example.com(即 user-1234@example.com)的电子邮件路由到 Postfix 中的管道命令?这个想法是通过为每个用户分配动态电子邮件别名来创建 craigslist 风格的匿名化。但是,我似乎无法在文档中找到相关信息。
我想要根网址
http://www.example.com
Run Code Online (Sandbox Code Playgroud)
重定向到
http://www.example.com/something/else
Run Code Online (Sandbox Code Playgroud)
这是因为一些奇怪的 WP 插件总是在基本 url 上设置一个 cookie,这不允许我缓存它。
我试过这个指令:
location / {
rewrite ^ /something/else break;
}
Run Code Online (Sandbox Code Playgroud)
但是 1) 没有重定向和 2) 页面开始向我的服务器发送 1,000 多个请求。有了这个:
location / {
rewrite ^ http://www.example.com/something/else break;
}
Run Code Online (Sandbox Code Playgroud)
Chrome 报告重定向循环。
要使用的正确正则表达式是什么?
我知道很多程序都使用颜色——(vim、ack、color-ls 等等)但是仍然有很多情况你会被黑色和白色所困扰。
有一些脚本会根据正则表达式为输出着色(即“使任何匹配 'dog' 的东西变成红色”),但这些脚本必须用管道调用 - 例如:"> cat myfile | color dog red" 这对任何东西都没用交互的。
我正在寻找的是可以连接终端模拟器(或实际执行此操作的终端)并为与给定正则表达式匹配的任何内容着色的东西,而与我当前使用的外壳或程序无关。如果这也适用于 ncurses,那就太棒了。我有太多的单色程序,如果我可以指定一个关键字列表以在它们出现或键入时突出显示/着色,那就太好了。
我使用 Guake 控制台,它可能使用 GNOME 终端,我不知道 GNOME 是否已经有这个功能。
我刚刚在 CentOS 服务器上安装了 fail2ban 以响应 SSH 蛮力尝试。fail2ban 的 sshd.conf 文件中的默认正则表达式与 audit.log 中的任何条目都不匹配,这是 SSH 似乎记录所有连接尝试的地方,所以我试图添加一个匹配的表达式。
我试图匹配的字符串如下:
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)'
Run Code Online (Sandbox Code Playgroud)
我试图使用的正则表达式是:
^.*addr=<HOST>, terminal=sshd res=failed.*$
Run Code Online (Sandbox Code Playgroud)
我已经使用 regextester.com 和 regexr 来尝试构建正则表达式。测试人员给了我这个正则表达式的匹配项:^.*addr=\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}, terminal=sshd res=failed.*$但是如果我不在<HOST>正则表达式中使用标签,fail2ban-regex 会抱怨。但是,使用^.*addr=<HOST>, terminal=sshd res=failed.*$给了我 0 个匹配项。
在这一点上,我完全被困住了,我将不胜感激任何帮助。我在尝试使用的正则表达式中做错了什么?