在正则表达式模式中包含 OR (PHP)

发布于 2024-12-08 16:56:44 字数 402 浏览 0 评论 0原文

尝试创建包含条件的模式。

$pattern["body"]='/(<\/a><\/li><\/ul><\/div><p>|<h2>)(.*)<div class="like">/s';

该模式应识别一系列“<\/a><\/li><\/ul><\/div>

”之间的任何文本

”作为开始分隔符,但显然 or 条件在这种情况下不起作用。 任何人都可以提供正确语法的提示!?我努力了1个小时,我已经失去了对这条规则的专注和耐心。 先感谢您。

Trying to create a pattern that includes an or condition.

$pattern["body"]='/(<\/a><\/li><\/ul><\/div><p>|<h2>)(.*)<div class="like">/s';

The pattern should recognize any text between a series of "<\/a><\/li><\/ul><\/div><p>" or a "<h2>" as the beginning delimiter, but apparently the or condition does not work in this case.
Anyone can offer a hint for the correct syntax!? I am striving for 1 hour and I have lost the focus and patience in this rule.
THank you in advance.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

ヅ她的身影、若隐若现 2024-12-15 16:56:44
"(?<=</a></li></ul></div>|<h2>).*"

请参阅下面的 grep 测试:

kent$  echo "</a></li></ul></div>something"|grep -Po "(?<=</a></li></ul></div>|<h2>).*"                                                  
something

kent$  echo "<h2>something"|grep -Po "(?<=</a></li></ul></div>|<h2>).*"                                                                  
something
"(?<=</a></li></ul></div>|<h2>).*"

see below grep test:

kent$  echo "</a></li></ul></div>something"|grep -Po "(?<=</a></li></ul></div>|<h2>).*"                                                  
something

kent$  echo "<h2>something"|grep -Po "(?<=</a></li></ul></div>|<h2>).*"                                                                  
something
杯别 2024-12-15 16:56:44
'%(</a></li></ul></div><p>|<h2>)(.*)<div class="like">%s'

我没有任何样本数据可供测试,但看起来您就在那里。我只是改变了分隔符,这样就不必转义了,我发现它更容易理解。

'%(</a></li></ul></div><p>|<h2>)(.*)<div class="like">%s'

I don't have any sample data to test against but it looks like you were there. I only changed the delimiter so it wouldn't have to be escaped, I find it's easier to understand.

谁人与我共长歌 2024-12-15 16:56:44

这可能有效 http://www.ideone.com/zYB1n
但是,我不是 php 专家。

$regex = '/(?:<\/a>\s*<\/li>\s*<\/ul>\s*<\/div>\s*<p>|<h2>)(?<Text>[\S\s]*)(?=<div class="like">)/';
if (preg_match( $regex, $str1, $matches ))
  print_r( $matches['Text'] );

This might work http://www.ideone.com/zYB1n
But, I'm no php expert.

$regex = '/(?:<\/a>\s*<\/li>\s*<\/ul>\s*<\/div>\s*<p>|<h2>)(?<Text>[\S\s]*)(?=<div class="like">)/';
if (preg_match( $regex, $str1, $matches ))
  print_r( $matches['Text'] );
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文