【问题标题】:find the multiple occurrence of a word in a string using regular expression in php使用php中的正则表达式查找字符串中单词的多次出现
【发布时间】:2014-03-21 21:15:29
【问题描述】:

我正在尝试查找多次出现的字符串,并且还需要在匹配的单词之后查找字符串。 我会解释清楚的。

First :

$string  = "Apple = A fruit which keeps u healthy\n Ball = Used to play games  \nApple = A fsadasdasdit wasdashich keeps u healthy\n";
$keyword = "apple";
$pattern = '/^.*?\b'.$keyword.'\b.*/i';
$res = preg_match_all($pattern , $string , $matches);
print_r($matches);

在这里,我试图在字符串中找到 apple 的出现。但是,它只显示第一个单词 apple。但它没有显示第二个单词。

Second : 如果我找到了所有与关键字匹配的单词。我需要单词后面的字符串。 这意味着, 在这里,Apple 匹配了两次

如果关键字第一次匹配,我会得到这个Apple = A fruit which keeps u healthy。 现在,我需要将A fruit which keeps u healthy 存储在一个变量中。

第二次苹果在这里匹配,我将得到Apple = A fsadasdasdit wasdashich keeps u healthy\n,我需要将A fsadasdasdit wasdashich keeps u healthy存储在另一个变量中。

请帮我做这件事。提前致谢!

【问题讨论】:

    标签: php regex string


    【解决方案1】:

    你需要这个正则表达式:

    '/\bapple\W*(.*)$/mi'
    

    您想要的字符串在匹配组 #1 中可用。

    在线演示:http://regex101.com/r/nV2mI8

    代码:

    $re = '/\b' . $keyword . '\W*(.*)$/mi'; 
    $str = 'Apple = A fruit which keeps u healthy
    Ball = Used to play games
    Apple = A fsadasdasdit wasdashich keeps u healthy'; 
     
    preg_match_all($re, $str, $matches);
    

    【讨论】:

    • 嘿,谢谢!你解决了我的第一个问题。请帮我解决第二个问题
    • 实际上,如果您仔细查看演示链接,它可以解决这两个问题。在matched groups 中,您会在Apple = 之后获得所需的文本
    • 嘿,是的.. 抱歉,我没有注意到。非常感谢你阿努巴夫。你有一个伟大的anubhavam。你第二次帮我了。
    【解决方案2】:

    试试这个:

    $pattern = '/.*?\b'.$keyword.'\b.*(?=[\n\r]|$)/i';
    

    我已经从你的正则表达式的开头删除了^。并在末尾添加了一个lookahead (?=[\n\r]|$),看看后面是换行符还是字符串结尾。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-11
      • 1970-01-01
      • 1970-01-01
      • 2015-07-24
      • 1970-01-01
      相关资源
      最近更新 更多