$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/