我有以下正则表达式:
SOMETHING(.*?),(1|0)\\);
它需要匹配SOMETHING然后是任何东西,然后是逗号,然后是1或0后跟);但由于某种原因,最后一个括号未匹配,示例字符串:
SOMETHINGdfsdfdsfd dsffdsdf dfsfds FEHEF777a ,0);
大胆的部分是结局。我逃避错了吗? \应该工作......
示例php,其中$ o是我的字符串
preg_match_all('%INSERT INTO (.*?),(1|0)\);%sm', $o, $matches);
答案 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"
}
}
完美匹配。