正则表达式匹配0);

时间:2010-07-20 01:24:50

标签: php regex

我有以下正则表达式:

SOMETHING(.*?),(1|0)\\);

它需要匹配SOMETHING然后是任何东西,然后是逗号,然后是1或0后跟);但由于某种原因,最后一个括号未匹配,示例字符串:

  

SOMETHINGdfsdfdsfd dsffdsdf dfsfds FEHEF777a ,0);

大胆的部分是结局。我逃避错了吗? \应该工作......

示例php,其中$ o是我的字符串

preg_match_all('%INSERT INTO (.*?),(1|0)\);%sm', $o, $matches);

2 个答案:

答案 0 :(得分:1)

您的原始帖子并未显示您正在逃避它。你需要:

SOMETHING(.*?),(1|0)\);

如果你有,那么运行正则表达式的语言是什么,例如: Java,PHP,Perl?

更新

有些事情需要考虑。您在第一次捕获时使用的是非贪婪的表达式。与您的修饰符(多行和全点)结合使用可能会产生冲突。此外,根据您的输入,您可能需要转义第一组括号。

正则表达式非常强大,但只有它们的创建者一样强大。也就是说,除非你确切知道自己想要匹配什么,否则它们经常会失败。

答案 1 :(得分:1)

它在这里工作,你是否意味着在那里得到结尾);?如果是这样的话:

 SOMETHING(.*?),((?:1|0)\);)

否则:我们在说什么语言?您需要将\加倍或加倍吗? (\\ / \\\在某些实现中是可行的。)

编辑:好的,php

$php -r 'var_dump(preg_match_all("/SOMETHING(.*?),(1|0)\);/","SOMETHINGdfsdfdsfd dsffdsdf dfsfds FEHEF777a ,0);",$matches),$matches);'
int(1)
array(3) {
  [0]=>
  array(1) {
    [0]=>
    string(49) "SOMETHINGdfsdfdsfd dsffdsdf dfsfds FEHEF777a ,0);"
  }
  [1]=>
  array(1) {
        [0]=>
    string(36) "dfsdfdsfd dsffdsdf dfsfds FEHEF777a "
  }
  [2]=>
  array(1) {
    [0]=>
    string(1) "0"
  }
}

完美匹配。

相关问题