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

如何在PHP中将ereg表达式转换为preg?

袁子瑜
2023-03-14
问题内容

由于自PHP
5.3.0起不赞成使用POSIX正则表达式,所以我想知道一种将旧表达式转换为[PCRE(与Perl兼容的正则表达式)的简便方法。

例如,我有这个正则表达式:

eregi('^hello world');

如何将表达式转换为preg_match兼容的表达式?

注意: 此职位充当与从ereg到preg转换相关的所有职位的占位符,并用作相关问题的重复选项。请不要关闭此问题。

有关:

  • 如何将PHP的eregi更改为preg_match
    * 将ereg_replace更改为等效的preg_replace

问题答案:

语法上的最大变化是添加了定界符。

ereg('^hello', $str);
preg_match('/^hello/', $str);

分隔符几乎可以是任何非字母数字,反斜杠或空格字符的内容。最常用的一般是~/#

您也可以使用匹配的括号:

preg_match('[^hello]', $str);
preg_match('(^hello)', $str);
preg_match('{^hello}', $str);
// etc

如果在正则表达式中找到分隔符,则必须对其进行转义:

ereg('^/hello', $str);
preg_match('/^\/hello/', $str);

您可以使用preg_quote轻松转义字符串中的所有定界符和保留字符:

$expr = preg_quote('/hello', '/');
preg_match('/^'.$expr.'/', $str);

另外,PCRE支持用于各种事物的修饰符。最常用的一种是不区分大小写的修饰符i,它是eregi的替代品:

eregi('^hello', 'HELLO');
preg_match('/^hello/i', 'HELLO');

您可以在手册找到有关PHPE语法的完整参考,以及POSIX正则表达式和PCRE之间的差异列表,以帮助转换表达式。

但是,在您的简单示例中,您将不使用正则表达式

stripos($str, 'hello world') === 0


 类似资料:
  • 问题内容: 我目前正在将Web应用程序代码从PHP移植到JS。 我对此正则表达式有疑问。从PHP 这样使用 如何将其转换为在JS上工作? 先感谢您 问题答案: 没什么特别的。PHP regex语法与JavaScript中的语法非常相似: 您可以从 MDN的 本手册中找到有关JavaScript 中正 则表达式的更多信息:https : //developer.mozilla.org/en- US/

  • 我正在尝试执行以下操作(cb=CriteriaBuilder): 但我得到以下语法错误: 绑定不匹配:(表达式之间的泛型方法 是否可以转换表达式

  • 问题内容: 我想了一下,想到了一个有趣的问题,假设我们有一个配置(输入)文件,其中: 此外,我们还有s 的列表: 有没有办法将s(等)转换为代表lambda表达式的s?然后可以用作: 我将如何编写这样的方法? 我可以从JDK / JRE中重用吗? 我需要自己编写所有内容吗? 是否有可能将范围缩小到仅捕获lambda的其他内容? 问题答案: 马可对这个问题的评论是正确的。您无法从文件中读取裸Java

  • 问题内容: Java中的东西 现在它应该像这样转换成kotlin 但这是不正确的。 这是我得到的错误: 实际上,上面的代码只是一个说明问题的示例。这是我的原始代码: 问题答案: 正如@AndroidEx正确指出的那样,与Java不同,分配不是Kotlin中的表达式。原因是通常不建议带有副作用的表达。见这个讨论上类似的话题。 一种解决方案是拆分表达式并将赋值移出条件块: 另一个是使用stdlib中的

  • 我试图将js代码转换为java版本,但对正则表达式有点困惑:在js中,我有一个类似于:testString的表达式。拆分(“/(\w*\d)/g”) 我可以在java中使用什么等效语言?我试着用匹配器得到同样的结果。find()和split函数,但结果不一样。

  • 本文向大家介绍将中缀转换为后缀表达式,包括了将中缀转换为后缀表达式的使用技巧和注意事项,需要的朋友参考一下 前缀表达式是人类可读和可解的。我们可以轻松地区分算子的顺序,也可以在计算数学表达式时先使用括号将其求解。计算机无法轻松地区分运算符和括号,这就是为什么需要后缀转换的原因。 要将中缀表达式转换为后缀表达式,我们将使用堆栈数据结构。通过从左到右扫描infix表达式,当我们得到任何操作数时,只需将