perl正则表达式转义字符

fre*_*Wer 4 regex perl

我听说perl在使用正则表达式时是一种很好的语言,但我对需要转义的字符有点困惑

我在http://regexlib.com/RETester.aspx上测试了代码,得到了我想要的结果

//home/dev/abc/code/hello/world.cpp#1
//home/dev/((.*?)/[^/]+).*#

Match   $1  $2
//home/dev/abc/code/hello/world.cpp#    abc/code    abc
Run Code Online (Sandbox Code Playgroud)

但是,我不太确定如何将其转换为perl代码

我试过了,

\/\/home\/dev\/\(\(\.\*\?\)\/\[\^\/\]\+\)\.\*\#
Run Code Online (Sandbox Code Playgroud)

\/\/home\/dev\/((.*?)\/[^\/]+).*\#
Run Code Online (Sandbox Code Playgroud)

两者都失败了

难道你不认为逃避使正则表达式难以理解吗?我用错了吗?

run*_*rig 8

如果你用perl你没有使用/的正则表达式的分隔符,如果你preceed分隔符与"M"为匹配运算,或"S"的替换操作(例如,你可以使用#或者!甚至任何的括号/ bracket :) s[this][that],然后你不必逃避/.您还可以使用quotemeta函数或\Q... \Eregex 转义序列,它们会自动转义任何元字符.


mar*_*cog 5

你可以选择使用!而不是/包围你的正则表达式,这样你就不必逃避/.

m!//home/dev/((.*?)/[^/]+).*#!
Run Code Online (Sandbox Code Playgroud)

应该管用.以下是它的实际应用:http://ideone.com/TDrBG