/
和之间没有区别~
。您可以从多种分隔符中进行选择。这个想法是你可以选择一个不属于你的模式的字符,所以你不必逃避任何东西。例如,如果您想匹配3/4
并/
用作分隔符,则必须编写/3\/4/
,但~
可以编写~3/4~
.
关于您的问题,您必须将锚放在应该匹配的位置。因为它是字符串的末端锚,所以它在末端。您可能还想转义.
或将其放入字符类中。否则它将匹配任何字符:
/[.]domain$/
请注意,您的匹配项将仅包含.domain
. 如果您希望整个“名称”以结尾,.domain
则需要将其包含在模式中。我不知道您将什么定义为名称,但如果我们使用“字母数字和下划线”,即单词字符的正则表达式定义,您可以简单地\w+
在前面添加尽可能多的“单词”的.domain
。
最后,由于您似乎想要找到 this 的多个实例,并且在行结尾而不是字符串结尾,您需要使用preg_match_all
andm
修饰符,它也使$
匹配行结尾:
if(preg_match_all('/\w+[.]domain$/m', $input, $matches))
{
print_r($matches[0]);
}
那将打印
Array
(
[0] => truc.domain
[1] => machin.domain
)
工作演示。
要仅获取句点前面的部分,您可以在处获得explode()
这些结果.
,也可以捕获名称:
if(preg_match_all('/(\w+)[.]domain$/m', $input, $matches))
{
print_r($matches[0]);
print_r($matches[1]);
}
将打印
Array
(
[0] => truc.domain
[1] => machin.domain
)
Array
(
[0] => truc
[1] => machin
)
工作演示。