Why am I getting the error: Unmatched ( in regex; marked by <-- HERE?
Why am I getting the error: Unmatched ( in regex; marked by <-- HERE?
我无法弄清楚为什么我会收到标题中定义的错误。
这是我输入命令行的代码行:
perl -pi -e 's/(\/(?:(?:https?|ftp|file):\/\/|www\.|ftp\.)' myfilepath
基本上,我想做的是浏览 body 文本,找到所有 URL 并在域末尾附加一些内容。例如:
https://thisisalink.com/navigate/page <-- 我想忽略 ]
当我 运行 该代码时,我一直收到此错误:
Unmatched [ in regex; marked by <-- HERE in *)|[ <-- HERE A-Z0-9+&@#%=~_|5.030003)/gxi)/ at -e line 1, <> line 1.
如何解决这个问题?
$]
是一个 special variable,它包含当前使用的 Perl 解释器版本。因此,[A-Z0 9+&@#%=~_|$]
被插入为 [A-Z0 9+&@#%=~_|5.032001
(在我的 Perl 5.32.1 上),因此开头的 [
是不匹配的。要解决此问题,请使用 $
:
转义 $
[A-Z0 9+&@#%=~_|$]
类似地,在前面的正则表达式中,您使用的是 [...$?...]
,只是 $?
也是一个包含 最后一个管道关闭返回的状态的 special variable ,反引号 (``) 命令,成功调用 wait() 或 waitpid(),或来自 system() 运算符 。这不会导致任何错误,因为它应该是一个整数,但它不会匹配您想要的 $
或 ?
。再次使用 $?
.
转义 $
一般来说,当你想匹配文字 $
时,你应该转义它。
我无法弄清楚为什么我会收到标题中定义的错误。
这是我输入命令行的代码行:
perl -pi -e 's/(\/(?:(?:https?|ftp|file):\/\/|www\.|ftp\.)' myfilepath
基本上,我想做的是浏览 body 文本,找到所有 URL 并在域末尾附加一些内容。例如: https://thisisalink.com/navigate/page <-- 我想忽略 ]
当我 运行 该代码时,我一直收到此错误:
Unmatched [ in regex; marked by <-- HERE in *)|[ <-- HERE A-Z0-9+&@#%=~_|5.030003)/gxi)/ at -e line 1, <> line 1.
如何解决这个问题?
$]
是一个 special variable,它包含当前使用的 Perl 解释器版本。因此,[A-Z0 9+&@#%=~_|$]
被插入为 [A-Z0 9+&@#%=~_|5.032001
(在我的 Perl 5.32.1 上),因此开头的 [
是不匹配的。要解决此问题,请使用 $
:
$
[A-Z0 9+&@#%=~_|$]
类似地,在前面的正则表达式中,您使用的是 [...$?...]
,只是 $?
也是一个包含 最后一个管道关闭返回的状态的 special variable ,反引号 (``) 命令,成功调用 wait() 或 waitpid(),或来自 system() 运算符 。这不会导致任何错误,因为它应该是一个整数,但它不会匹配您想要的 $
或 ?
。再次使用 $?
.
$
一般来说,当你想匹配文字 $
时,你应该转义它。