我需要一个PHP中的regExp,它会找到所有数字,但没有引用包装,例如: 找到这个:一些文字1234一些文字 但不要碰这个:有些文字“有些文字1234有些文字”, 和这样的字符串应该传递给:“1234”或“123”等。
我有一个不完整的决定:
preg_match_all('/\b\d+\b/', $str, $matches);
我ve also tried something like this [^\"|\']+ but it didn
解决了问题。
答案 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);