我正在尝试使用PHP Eu
匹配U.s.
或preg_match_all
。
鉴于以下句子:
欧盟优于美国。在某些方面。
我可以匹配Eu和U.如果我使用:
preg_match_all("/\b(Eu|U\.s\. )\b/", $input_lines, $output_array);
但不是如果我使用:
preg_match_all("/\b(Eu|U\.s\.)\b/", $input_lines, $output_array);
为什么我需要一个空格。为了让我的正则表达式工作?
答案 0 :(得分:4)
元字符\ b是一个像插入符和美元符号的锚。它匹配一个称为“单词边界”的位置。这个匹配是零长度。
有三种不同的职位符合词边界:
在字符串中的第一个字符之前,如果第一个字符是 一个单词字符(\ w)。
在字符串中的最后一个字符之后,如果是最后一个字符 一个字符。
所以在你的情况下,这是美国的第3号。这样的界限: \ b U \ b。\ b s \ b。
答案 1 :(得分:1)
@ mmta41说的是什么。这是一个测试:
$re = '/(eu|\bU\b.\bs\b.)/mi';
$str = 'U.s.,u.S., U.S. , u.s.. ,Eu,eU, EU , eu.Europe UseuUs Europe';
preg_match_all($re, $str, $matches);
print_r($matches);
请参阅http://sandbox.onlinephpfunctions.com/code/9f435a11609606cf7f8d4f5e330d443989911c5b