我听说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
但是,我不太确定如何将其转换为perl代码
我试过了,
\/\/home\/dev\/\(\(\.\*\?\)\/\[\^\/\]\+\)\.\*\#
和
\/\/home\/dev\/((.*?)\/[^\/]+).*\#
并且都失败了
难道你不认为逃避使得正则表达式难以理解吗?我用错了什么?
答案 0 :(得分:8)
如果你正在使用perl,你不必使用/
作为正则表达式分隔符,如果你在分隔符之前用匹配运算符的“m”,或者替换运算符的“s”(例如你)可以使用#
或!
甚至任何平衡的括号/括号:s[this][that]
),然后您就不必转义/
。您还可以使用自动转义任何元字符的quotemeta函数或\Q
... \E
正则表达式escape sequences。
答案 1 :(得分:5)