+ -
当前位置:首页 → 问答吧 → 请问如何将整个正则当成参数去匹配

请问如何将整个正则当成参数去匹配

时间:2011-04-07

来源:互联网

大家好:

在php和js中都有类似preg_match(string pattern,,) 这样的方法,可以在pattern中自定义比如/i/s等参数。

请问在perl下有类似的方法吗? 能让下面的测试程序work

$xx="hello world";
$reg = '/(HelLo)/i';
print $1 if($xx =~ $reg);

谢谢各位

作者: strayhrt   发布时间: 2011-04-07

回复 strayhrt
  1. $xx="hello world";
  2. $reg = '(?i)(HelLo)';
  3. print $1 if ($xx =~ /$reg/);
复制代码
没法让你的程序工作,在只改变$reg的情况下

作者: py   发布时间: 2011-04-07

本帖最后由 yybmsrs 于 2011-04-07 08:52 编辑
  1. my $xx="hello world";

  2. my $reg = qr'(hello)';

  3. print $1 if $xx =~ $reg;
复制代码
这种情况下i好像就加不了

作者: yybmsrs   发布时间: 2011-04-07

  1. my $xx="Hello world";

  2. my $reg = qr'(?i)(hello)';

  3. print $1 if $xx =~ $reg;
复制代码

作者: yakczh   发布时间: 2011-04-07

本帖最后由 jason680 于 2011-04-07 09:11 编辑


QUOTE:
大家好:

在php和js中都有类似preg_match(string pattern,,) 这样的方法,可以在pattern中自定义比如/ ...
strayhrt 发表于 2011-04-07 02:30

  1. $xx="hello world";
  2. $reg = qr/(HelLo)/i;
  3. print $1 if($xx =~ $reg);
复制代码
  1. 也可以打印出来看...
  2. print "reg = '$reg'\n";    #   reg = '(?i-xsm:(HelLo))'
复制代码

作者: jason680   发布时间: 2011-04-07

  1.     $pattern = "foobar";   
  2.     if ( /$pattern/i ) { }   
  3.     # more flexible:   
  4.     $pattern = "(?i)foobar";   
  5.     if ( /$pattern/ ) { }
复制代码
学习了(?i)

作者: yybmsrs   发布时间: 2011-04-07

(?i)foobar 模式修饰符还可以这样加呀

作者: doujikai   发布时间: 2011-04-07

多谢各位   测试了下  (?i)这种写法 perl php都可以用的

谢谢

作者: strayhrt   发布时间: 2011-04-07