$regLinks = "~meaning+?.{0,500}\\.~siU";

我需要最后一个句点, \\. 不在小于号内,大于号 <> 。所以像 <color blue.> 这样的东西会被跳过。我将如何在正则表达式中实现这一目标?
$string "meaning: sad is when you are unhappy <blue green.> right now.";

^---因此,与其停在 <blue green.> ,不如停在
meaning: sad is when you are unhappy `<blue green.>` right now.

最佳答案

您可以将 . 中的 .{0,500} 更改为 (?:[^<]|<[^>]*>)
(?: ) 是一个不捕获的正则表达式组(普通的 ( ) 也会捕获它匹配的字符串)。
<> 只是匹配自己。
[^>]* 匹配 0 个或多个非 > 字符。

实际上,我们不匹配“任何字符”( . ),而是匹配

  • 一个“正常”字符(不是 < 的东西)

  • 或者
  • <...> 组(由 < ,后跟 0 个或多个非 > 字符,后跟 > 组成)
  • 关于php - 正则表达式跳过小于号和大于号内的句点,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32831237/

    10-12 15:46