为什么正则表达式包含在正斜杠中

时间:2015-06-06 15:06:27

标签: php regex

我潜入了正则表达式。

$subject = "abcdef";
$pattern = '/^def/';
preg_match($pattern, substr($subject,3), $matches, PREG_OFFSET_CAPTURE);
print_r($matches);

我看到正斜杠用于标记正则表达式的开头和结尾。我试图找出原因。我无法找到有关这些正斜杠的任何文档。

2 个答案:

答案 0 :(得分:2)

关于preg_...()函数的第一个也是最重要的事情是它们期望模式的每一侧都有一个字符分隔符。对于分隔符,您可以选择除反斜杠和空格之外的任何字符。正斜杠是最常用的分隔符。

而且,documentation引用分隔符中的所有内容都非常明确。

答案 1 :(得分:1)

出于传统/传统原因。通常,我们对正则表达式,模式,替换和修饰符有三个部分。例如,替换命令:

s/Hello/G'day/g

有三个组成部分:Hello是模式 - 我们想要找到" Hello",G'day是替代 - 我们要替换"你好"使用" G' day"和g作为修饰符 - 在这种情况下,g表示尽可能多地执行此操作而不是仅执行一次。

对于某些语言,它们将组件作为单独的参数,而不是使用斜杠分隔。

通常,如果你看到它没有任何斜线,这意味着它是模式。如果由于某种原因,语言围绕带有斜杠的模式,您知道这意味着它是模式。

希望这会有所帮助。 :)