php - preg_match_all 模式创建

标签 php regex preg-match

如何正确格式化正则表达式模式以查找 ex 中 (* ''' 和 ''') 之间包含的字符串的匹配项。像这样的东西:

Lorem ipsum dolor sit amet, *'''Consectetur adipiscing elit'''. Quisque id diam sit amet
lectus semper blandit a sit amet nibh. *'''Phasellus fermentum nisi vitae lacus'''
scelerisque dapibus.

我尝试过这样的事情:

preg_match_all("/\* \'\'\'(.+?)\'\'\'/i", $new_content, $matches);

但我得到这样的结果:

array (size=2)
  0 => 
    array (size=2)
        0 => string '* '''Consectetur adipiscing elit''''
        1 => string '* '''Phasellus fermentum nisi vitae lacus''''
  1 => 
    array (size=2)
        0 => string 'Consectetur adipiscing elit'
        1 => string 'Phasellus fermentum nisi vitae lacus'

我几乎根本不使用正则表达式,所以我不知道我到底在做什么!

最佳答案

您可以使用以下模式:

$str = <<<EOF
Lorem ipsum dolor sit amet, *'''Consectetur adipiscing elit'''. Quisque id diam sit amet
lectus semper blandit a sit amet nibh. *'''Phasellus fermentum nisi vitae lacus'''
scelerisque dapibus.
EOF;

$pattern = "~\*'''(.*?)'''~s";

if(preg_match_all($pattern, $str, $matches)) {
    var_dump($matches[1]);
}

输出:

array(2) {
  [0] =>
  string(27) "Consectetur adipiscing elit"
  [1] =>
  string(36) "Phasellus fermentum nisi vitae lacus"
}

说明:

     ~      is the pattern delimiter
    \*      asterisk has to be escaped
   '''      ''' 
    ()      special matching group
   .*?      any char (except of the following ''', ? -> ungreedy)
   '''      '''
     ~      pattern delimter
     s      Option, includes newlines in .*

关于php - preg_match_all 模式创建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16715319/

相关文章:

php - 插入新事件时 SQL 语法错误

php - Yii2 Controller 中的下拉列表值

javascript - 将 PHP 数组传递给 Javascript 变量

javascript - 创建所有正则表达式匹配的数组?

php - 在 "background"运行函数

php - 正则表达式基础 : grab text between two constants

ruby-on-rails - 是否可以自定义外键以使用正则表达式

PHP 检查字符串是否包含单词之间的空格(不在开头或结尾)

php - 当正则表达式正常时,为什么 preg_match 找不到标签之间的字符串?

php - 编译失败 : nothing to repeat at offset 6