Regex将所有内容都放在括号中

Regex将所有内容都放在括号中,regex,html-parsing,Regex,Html Parsing,我试图从这一段中获取内容,但我使用的正则表达式不起作用。当我从这一段中移除线制动器时,正则表达式起作用,否则它不起作用。请告诉我该怎么做 以下是一段: <span class="st">My Paragraph - you can download free <b>drivers</b> for audio, video, chipset, Wi Fi or USB, or a <b>driver</b> installation pa

我试图从这一段中获取内容,但我使用的正则表达式不起作用。当我从这一段中移除线制动器时,正则表达式起作用,否则它不起作用。请告诉我该怎么做

以下是一段:

<span class="st">My Paragraph - you can download free <b>drivers</b> for audio, video, chipset, Wi
Fi or USB, or a <b>driver</b> installation pack for <b>notebook</b>/(for&nbsp;...</span><br></div>
我的段落-您可以下载音频、视频、芯片组和无线网络的免费驱动程序
Fi或USB,或笔记本电脑的驱动程序安装包/(用于…
我的正则表达式:

preg_match_all('/<span class="st">(.+?[^\n])<\/span><br><\/div>/i', $file_strings, $ti);
preg_match_all('/(.+?[^\n])
/i',$file_strings,$ti);
当我使用这一段时,它是有效的

<span class="st">My Paragraph - you can download free <b>drivers</b> for audio, video, chipset, WiFi or USB, or a <b>driver</b> installation pack for <b>notebook</b>/(for&nbsp;...</span><br></div>
我的段落-您可以下载音频、视频、芯片组、WiFi或USB的免费驱动程序,或笔记本电脑的驱动程序安装包/(用于…
输出应该如下所示

My Paragraph - you can download free <b>drivers</b> for audio, video, chipset, WFi or USB, or a <b>driver</b> installation pack for <b>notebook</b>/(for&nbsp;...
我的段落-您可以下载音频、视频、芯片组、WFi或USB的免费驱动程序,或笔记本电脑的驱动程序安装包/(用于。。。
正如你们所看到的,我刚刚从wifi中移除了线路制动器,它正在工作,但我需要regex,它可以在不移除线路制动器的情况下工作

看到这个屏幕截图,我正在测试我的正则表达式 我在这里测试

解决方案提交人:

正斜杠解决问题后,用加法代替i

 preg_match_all('/<span class="st">(.+?[^\n])<\/span><br><\/div>/is', $file_strings, $ti);
preg\u match\u all('/(.+?[^\n])
/is',$file\u strings,$ti);
我可以看到,您正试图通过html文件进行解析以获得一些值,您应该使用html解析工具来完成此操作,而不是使用正则表达式。python中的示例:“beautifulsoup”以及所有关于使用正则表达式解析html的免责声明,下面是一个与您的段落相匹配的紧凑正则表达式(请参阅):

它是如何工作的?

  • 匹配开始span标记后,
    \K
    将其从要返回的匹配中删除
  • *?。
    也匹配所有字符
  • 一种位置,在此位置,
    (?=)
    先行可以断言后面的是结束span标记

  • @user3675088的可能重复项它完全是重复项。您正试图用正则表达式解析HTML,就像那个家伙一样。解决方案也是一样的:不要。使用XML和/或HTML解析器解析HTML。@user3675088问题中的代码是HTML。您正试图用正则表达式解析它。故事结束。to ma如果圆点也与换行符匹配,则需要使用
    s
    (PCRE\u DOTALL)。将其放在开头的模式中
    (?is)谢谢@Jonny5它正在工作fine@StephenOstermiller呃…一个没有链接的答案不可能是一个只有链接的答案。事实上,我认为这是一个相当不错的答案,虽然包括一个例子会让它更好,但我不认为它是坏的。虽然这个产品推荐可以回答这个问题,但最好包括更多这里有信息。
    
    (?s)<span[^>]*>\K.*?.(?=</span>)
    
    $regex = "~(?s)<span[^>]*>\K.*?.(?=</span>)~";
    $count = preg_match_all($regex,$string,$matches); //optional: ,SET_PATTERN_ORDER