PHP正则表达式找不到引号的数字?

时间:2011-04-30 07:51:33

标签: php

我需要一个PHP中的regExp,它会找到所有数字,但没有引用包装,例如: 找到这个:一些文字1234一些文字 但不要碰这个:有些文字“有些文字1234有些文字”, 和这样的字符串应该传递给:“1234”或“123”等。

我有一个不完整的决定:

preg_match_all('/\b\d+\b/', $str, $matches);

ve also tried something like this [^\"|\']+ but it didn解决了问题。

2 个答案:

答案 0 :(得分:1)

我不知道,如果可以用简单的RE完成,但你可以分两步完成。

1)过滤掉所有引用的字符串,如

$filtered = preg_replace('/"[^"]+"/', '', $str)

2)在结果

上应用你的正则表达式
preg_match_all('/\b\d+\b/', $filtered, $matches);

如果您的文字不是很大或很复杂,那么它应该没问题(取决于内存大小)

答案 1 :(得分:0)

您可以使用PHP断言:

http://php.net/manual/en/regexp.reference.assertions.php

preg_match_all("/\d+(?!')/s", $str, $matches);