当前位置: 首页 > 面试题库 >

是否有一个PHP函数可以在应用正则表达式模式之前对其进行转义?

施琦
2023-03-14
问题内容

是否有一个PHP函数可以在应用正则表达式模式之前对其进行转义?

我正在寻找与C#Regex.Escape()函数相似的东西。


问题答案:

preg_quote() 您正在寻找的是:

描述

string preg_quote ( string $str [, string $delimiter = NULL ] )

preg_quote()str
并把反斜杠在每一个正则表达式语法的字符的前面。如果您有需要在某些文本中匹配的运行时字符串,并且该字符串可能包含特殊的正则表达式字符,这将很有用。

特殊的正​​则表达式字符为: . \ + * ? [ ^ ] $ ( ) { } = ! < > | : -

参量

力量

输入字符串。

定界符

如果指定了可选的定界符,则也将对其进行转义。这对于转义PCRE功能所需的分隔符很有用。/是最常用的定界符。

重要的是,请注意,如果$delimiter未指定参数,定界符
-用于将您的正则表达式括起来的字符,通常是正斜杠(/)-将不会转义。通常,您将需要使用正则表达式作为$delimiter参数传递任何定界符。

示例- preg_match用于查找由空白包围的给定URL的出现:

$url = 'http://stackoverflow.com/questions?sort=newest';

// preg_quote escapes the dot, question mark and equals sign in the URL (by
// default) as well as all the forward slashes (because we pass '/' as the
// $delimiter argument).
$escapedUrl = preg_quote($url, '/');

// We enclose our regex in '/' characters here - the same delimiter we passed
// to preg_quote
$regex = '/\s' . $escapedUrl . '\s/';
// $regex is now:  /\shttp\:\/\/stackoverflow\.com\/questions\?sort\=newest\s/

$haystack = "Bla bla http://stackoverflow.com/questions?sort=newest bla bla";
preg_match($regex, $haystack, $matches);

var_dump($matches);
// array(1) {
//   [0]=>
//   string(48) " http://stackoverflow.com/questions?sort=newest "
// }


 类似资料:
  • 本文向大家介绍PHP 正则表达式常用函数,包括了PHP 正则表达式常用函数的使用技巧和注意事项,需要的朋友参考一下 1.preg_match() 函数原型:int preg_match (string $pattern, string $content [, array $matches]) preg_match ()函数在$content字符串中搜索与$pattern给出的正则表达式相匹配的内容

  • 我有一个带两个可能输出的字符串,它将被<代码>

  • 昨天,我需要向正则表达式添加一个文件路径,创建一个如下所示的模式: 一开始正则表达式不匹配,因为包含几个正则表达式特定的符号,如 或 。作为快速修复,我将它们替换为 和 . 与 . 然而,我问自己,是否没有一种更可靠或更好的方法来清除正则表达式特定符号中的字符串。 Python 标准库中是否支持此类功能? 如果没有,您是否知道一个正则表达式来识别所有正则表达式并通过替代品清理它们?

  • 我有一个regex语句,如下所示: <代码>(。*)_(ce)_(。*)_([0-9]{8}).([A-Za-z]{1,20})(?:\\.[A-Za-z]{1,20})? 它应该将分组。 因此,这是一个可能的传递字符串: 。 这些群体是: 我现在想使(ce)成为可选的,并使正则表达式如下所示: ( 这样就会通过:,组将是: 这将传递:,组将是: 所以,正则表达式有效!问题是,当(ce_)出现在正

  • 问题内容: 假设我要使用SCAN功能扫描Redis中的集合。是否可以将正则表达式传递给MATCH? 问题答案: 不,是仅支持通配符的模式。

  • 问题内容: 我正在使用以下正则表达式模式 它将接受以下任何IP地址 但是我希望它应该接受逗号分隔的单个以及IP地址,如下所示 我必须在正则表达式中做哪些更改? 问题答案: 它慢慢变得难以理解,但是您在这里: ^(\ d | [1-9] \ d | 1 \ d \ d | 2([0-4] \ d | 5 [0-5]))。(\ d | [1-9] \ d | 1 \ d \ d | 2([0-4] \