- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
正则表达式
preg_match_all('@(\b' . preg_quote($needle,'@') . '\b)@is', $haystack, $matches);
干草堆
(工作:NAS-Inkrementell)操作成功。
针
操作成功
--> 有效
操作成功。
--> 不工作
我做了一些测试:
替代干草堆
(Job: NAS-Inkrementell) 操作成功。
替代针
操作成功
--> 有效
因此,针确实正确地转义了,正如我通过 dump(preg_quote($needle,'@'));
看到的那样 --> Operation succeeded\.
包含尾随点的正确方法是什么?
快速引用:http://www.phpliveregex.com/p/hzl
谢谢
编辑
我还需要在大海捞针My-NAS
时区分My-NAS
和My-NAS-2
,所以我还需要尾随 \b
。
EDIT2
ideone.com/Suzz2E我希望它是 1 1 0 1 而不是 1 1 1 1,因此如果大海捞针中只有 MyNAS-2
,则不应找到 MyNAS
。
最佳答案
.
不是单词字符,\.\b
模式需要在.
之后有一个单词字符。您需要实现自定义字边界。
由于您需要匹配前面没有单词 char 或连字符并且后面没有单词 char 或连字符的字符串,您可以使用
preg_match_all('@(?<![\w-])' . preg_quote($needle1,'@') . '(?![\w-])@is', $haystack, $matches)
参见 regex demo .
参见 PHP demo :
$haystack1 = "(Job: NAS-Inkrementell) Operation succeeded. MyNAS-2 reports duty.";
$needle1 = "Operation succeeded";
echo preg_match_all('@(?<![\w-])' . preg_quote($needle1,'@') . '(?![\w-])@is', $haystack1, $matches1) ."\n";
$needle2 = "Operation succeeded.";
echo preg_match_all('@(?<![\w-])' . preg_quote($needle2,'@') . '(?![\w-])@is', $haystack1, $matches2) ."\n";
$needle3 = "MyNAS";
echo preg_match_all('@(?<![\w-])' . preg_quote($needle3,'@') . '(?![\w-])@is', $haystack1, $matches3) ."\n";
$needle4 = "MyNAS-2";
echo preg_match_all('@(?<![\w-])' . preg_quote($needle4,'@') . '(?![\w-])@is', $haystack1, $matches4) ."\n";
关于php - preg_quote 忽略 preg_match_all 中的尾随点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40125696/
我使用 preg_replace 并且我想在替换字符串中包含一个 url。我如何引用该字符串?看来 preg_quote 仅适用于搜索模式。 $replace = '\1'.addslashes($u
您好,我试图在将字符串转换为 PHP 中的正则表达式之前连接该字符串,但问题是它没有按预期显示。我一直在使用谷歌搜索并找到了关于 preg_quote 的信息,问题是它不能正常工作。 这是我的例子:
我需要编写一个与 preg_quote 函数完全相反的函数。简单地删除所有 '\' 是行不通的,因为字符串中可能有 '\'。 例子; inverse_preg_quote('an\\y s\.tri\
正则表达式 preg_match_all('@(\b' . preg_quote($needle,'@') . '\b)@is', $haystack, $matches); 干草堆 (工作:NAS-
在 PHP 中,您需要使用 preg_quote() 来转义字符串中在正则表达式中具有特定含义的所有字符,以允许(例如)preg_match() 搜索那些特殊字符。 以下代码在 Ruby 中的等价物是
PHP 的preg_quote 等价于什么? ? 这是我创建一个从字符串中提取文本的方法所得到的: public static string f_get_string_between(stri
我是一名优秀的程序员,十分优秀!