我正在尝试获得匹配的正则表达式:(它不应该匹配任何其他字符串)
Word1 or Word2 or Word3 or Wordn
在“或”之前或之后捕获单词
1: Word1 2: Word2 3: Word3 n: Wordn
我试过修改csv正则表达式:
(?:^|,)(\"(?:[^\"]+|\"\")*\"|[^,]*)
至
(?:^|(?:or)((?:[^(?:or)]+)*|[^(?:or)]*)
但这并没有给我我想要的东西.
我确定我错过了一些东西,但我已经敲了几个小时.
解决方法
怎么样:
my $string = " foo or bar or foobar "; if ( $string =~ m|^\s*[^\s]+(\s+or\s+[^\s]+)+\s*$| ) { my $tmp = "$string"; $tmp =~ s|^\s+||; $tmp =~ s|\s+$||; my @words = split( /\s+or\s+/,$tmp ); printf( "Found %d words:\n",scalar( @words ) ); foreach my $word ( @words ) { print( "\t'$word'\n" ); } } else { print( "No match\n" ); }
以上将输出:
Found 3 words: 'foo' 'bar' 'foobar'