正则表达式

时间:2011-07-19 16:24:49

标签: regex perl

正则表达式仍然是我逃避的事情之一。我想要的很简单,但我还没有能够始终如一地匹配。无论如何,我想要匹配的文字是/ssl/checkoutstep1.aspx

非常感谢您的专业知识。

2 个答案:

答案 0 :(得分:4)

而不是默认分隔符/,如果您使用类似非斜杠的管道,则会更容易:|

if ($string =~ m|/ssl/checkoutstep1\.aspx|i) {
  print 'match';
} else {
  print 'no match';
}

我假设你真的需要正则表达式(因为你想要学习它,或者你正在进行路径重写,或者其他什么)。您的示例可以通过简单的不区分大小写的indexof或contains来解决。

答案 1 :(得分:0)

因为看起来你真的不需要正则表达式,所以你应该考虑eq或index

if ( lc( $string ) eq '/ssl/checkoutstep1.aspx' ) { ... } ## for exact matches

if ( index( lc( $string ), '/ssl/checkoutstep1.aspx' ) != -1 ) { ... } ## for partial matches

这更快,避免了正则表达式的混淆。如果你坚持使用正则表达式,agent-j的响应就是你想要的,尽管我更喜欢{}。

if ( $string =~ m{\Q/ssl/checkoutstep1.aspx\E}i ) { ... } ## the \Q and \E escape the special chars between them