正则表达式捕获特定单词之间的单词

前端之家收集整理的这篇文章主要介绍了正则表达式捕获特定单词之间的单词前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试获得匹配的正则表达式:(它不应该匹配任何其他字符串)

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'

猜你在找的正则表达式相关文章