正则单行和多行处理

来源:互联网 发布:阿里二手域名 编辑:程序博客网 时间:2024/05/21 07:06
m 将待匹配串视为多行,^符号匹配字符串的起始或新的一行的起始;$符号匹配任意行的末尾。以下例只匹配第一行为a,否则无匹配;sh-3.2$ cat a6.pl $line='abc';if ($line =~ /^(.*)$/m){print $&."\n"};sh-3.2$ perl a6.pl a当成多行处理,只能匹配到a$& ---匹配的内容s 将待匹配串视为单行。可以匹配\nsh-3.2$ cat a6.pl $line='abc';if ($line =~ /^(.*)$/s){print $&."\n"};sh-3.2$ perl a6.pl abc-----------------------------------------------------------------------------------------------------------/s  把多行当成单行处理sh-3.2$ cat a5.pl#!/usr/bin/perl   use strict;use DBI;my $dbName = 'orcl';  my $dbUser = 'test';  my $dbUserPass = 'test';  my $dbh = DBI->connect("dbi:Oracle:$dbName", $dbUser, $dbUserPass) or die "can't connect to database ";if ($#ARGV <0){   print "请输入一个参数\n";  exit(-1);}my $var=$ARGV[0];my $sql = $var;if ($var =~ /select\s+(.+)\s+from\s+.*/is){ $a = $1};chomp ($a);my @arr = (split /,/,"$a");foreach (@arr){chomp ($_);print $_." ";}my $sth = $dbh->prepare($sql); $sth->execute();  while (my  @arr = $sth->fetchrow_array()){print "\n@arr\n";}sh-3.2$ perl a5.pl "select a.session_id,       a.sql_id,       a.blocking_session,       a.sample_time,       a.module,       a.PROGRAM,       a.event,       b.SQL_TEXT  from v\$active_session_history a, v\$sqlarea b where a.sql_id = b.sql_id" | head -10 a.session_id        a.sql_id        a.blocking_session        a.sample_time        a.module        a.PROGRAM        a.event        b.SQL_TEXT  1635 1bnt1kmfb8y30  05-JAN-15 11.38.04.823 AM SQL*Plus sqlplus@jhoa (TNS V1-V3)  select * from dba_objects order by 1,2,3,4,5

0 0