【发布时间】:2017-01-27 11:22:07
【问题描述】:
我正在为我正在使用的一些方法编写一些单元测试,并且发现了一个奇怪的错误并想要一些正则表达式的建议。
做的时候:-
$needle = ' ';
$haystack = 'hello world. this is a unit test.';
$pattern = '/\b' . $needle . '\b/';
preg_match_all($pattern, $haystack, $matches, PREG_OFFSET_CAPTURE, $offset)
我期待的职位是
[5, 12, 17, 20, 22, 27]
就像我这样做一样,没有完全匹配的整个单词
while (($pos = strpos($haystack, $needle, $offset)) !== false) {
$offset = $pos + 1;
$positions[] = $pos;
}
但是 preg_match_all 没有找到第二次出现 (12) 之间的空格
. this
这与 \b 边界标志有关吗?我该如何解决这个问题以确保它能够接收到其他问题?
谢谢
【问题讨论】:
-
如果两边都需要字符字符,你怎么能期望
\b \b匹配.和this之间的空格?你需要什么词边界?什么是你的“词”?在任何逻辑世界中,空格都不能是单词。 -
嗨 Wikto - 我不是!这就是我编写测试的原因,并想知道如何正确处理它。我的代码适用于文字,但我想更新它以处理它是否作为空格 =)
标签: php regex preg-match-all