regex - 这个 perl 脚本的正确用法是什么?

标签 regex apache perl .htaccess

考虑以下 perl shell 脚本;

perl -p -i.bak -e 's/index.php?pageid=/p//g' `grep -ril index.php?pageid= *`

我正在尝试递归地浏览我网站中的所有 Web 目录并更改

的任何字符串

index.php?pageid=

p/

这是为了缩短我的链接,例如:

www.domain.com/index.php?pageid=page1

www.domain.com/p/page1

我已经正确设置了 .htaccess 文件,但是这个 shell 脚本对我不起作用,我相信这是因为 ?= 符号弄乱正则表达式的原始字符串。

我该如何解决这个问题?我对正则表达式很糟糕。

最佳答案

.和问号?characters of special meaning并且需要逃脱。此外,您需要在替换中转义正斜杠或使用不同的分隔符以避免转义。

perl -i.bak -pe 's!index\.php\?pageid=!p/!g'

关于regex - 这个 perl 脚本的正确用法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25755763/

相关文章:

python - 使用正则表达式分组将字符串转换为字典

python - 我可以在 1 个域上使用 2 个不同版本的 Python 拥有 2 个 Django 站点吗?

php - 没有来自 docker 容器的 php-fpm 错误日志

mysql - 防止apache释放80端口

perl - 您如何检查对象是否重载了 XS 中的运算符?

python - 正则表达式 - 用大写字母替换每个匹配项

regex - 正则表达式提取器 Jmeter - 我想发送 404 响应代码的电子邮件

javascript - 正则表达式:读取数字后面的字符

perl - 在perl中复制图像文件

java - 使用 java 捕获 perl 输出