PHP preg_match Regular Expression Improvement(PHP preg_Match正则表达式改进)
本文介绍了PHP preg_Match正则表达式改进的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
您好,
我正在尝试扩大我当前在ShoutBox中使用的preg_Match的范围。我正在努力构建我当前的正则表达式,以获得所需的标识。请查看我正在使用的当前正则表达式,后跟有关我希望实现的匹配的一些信息。
当前正则表达式:
~f+(?:.+|s+)?r+(?:.+|s+)?e+(?:.+|s+)?d+(?:.+|)?~i
所需匹配信息:
[01]Lorem ipsum door弗雷德坐好。
- 标识关键字。
[02]Lorem ipsum door$fred请坐。
- 标识单个美元符号和关键字。
[03]Lorem ipsum door$of red请坐。
- 标识单个美元符号,后跟单个字母数字字符和关键字。
[04]Lorem ipsum door$ooofred请坐。
- 标识单个美元符号,后跟多个字母数字字符和关键字。
[05]Lorem ipsum door$ooofred请坐。
- 标识多个美元符号,后跟多个字母数字字符和关键字。
[06]Lorem ipsum door$of red请坐。
- 标识多个美元符号,后跟单个字母数字字符和关键字。
[07]Lorem ipsum door$o$oo$$of red请坐。
- 标识美元符号和字母数字字符后跟关键字的任意组合。
[08]Lorem ipsum door$o$oo$of red请坐。
- 空格分隔标识
[09]$of red请坐。
- 标识为无前导空格
[10]Lorem ipsum Dolor$of red
- 标识为不带尾随空格
[11]Lorem ipsum door$of red!
- 用尾部符号标识
谢谢您的帮助,非常感谢。
推荐答案
对于这么小的正则表达式,这一定是我见过的最长的解释了:
if (preg_match('/(?<=^|s)(?:fred|$[$w]*fred)/x', $subject, $regs)) {
$result = $regs[0];
}
说明:
"
(?<= # Assert that the regex below can be matched, with the match ending at this position (positive lookbehind)
# Match either the regular expression below (attempting the next alternative only if this one fails)
^ # Assert position at the beginning of the string
| # Or match regular expression number 2 below (the entire group fails if this one fails to match)
s # Match a single character that is a "whitespace character" (spaces, tabs, line breaks, etc.)
)
(?: # Match the regular expression below
# Match either the regular expression below (attempting the next alternative only if this one fails)
# Assert position at a word boundary
fred # Match the characters "fred" literally
# Assert position at a word boundary
| # Or match regular expression number 2 below (the entire group fails if this one fails to match)
$ # Match the character "$" literally
[$w] # Match a single character present in the list below
# The character "$"
# A word character (letters, digits, etc.)
* # Between zero and unlimited times, as many times as possible, giving back as needed (greedy)
fred # Match the characters "fred" literally
# Assert position at a word boundary
)
"
这篇关于PHP preg_Match正则表达式改进的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:PHP preg_Match正则表达式改进


基础教程推荐
猜你喜欢
- 如何在数学上评估像“2-1"这样的字符串?产生“1"? 2022-01-01
- php 7.4 在写入变量中的 Twig 问题 2022-01-01
- Web 服务器如何处理请求? 2021-01-01
- php中的foreach复选框POST 2021-01-01
- Yii2 - 在运行时设置邮件传输参数 2022-01-01
- PHPUnit 的 Selenium 2 文档到底在哪里? 2022-01-01
- php中的PDF导出 2022-01-01
- 使用 scandir() 在目录中查找文件夹 (PHP) 2022-01-01
- 主题化 Drupal 7 的 Ubercart “/cart"页 2021-01-01
- 将变量从树枝传递给 js 2022-01-01