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