文字是这样的:
$string = " <L UXUHSXUS>importantText</L>";
我想在PHP Regular Expression中使用lookbehind功能 但是每当我尝试放置。+或任何正则表达式时它都会产生错误
preg_match_all('%(?<=<L.+>)([\s\S]*?)(?=</LF>)%',$string, $matches);
这会产生错误。
我应该怎样做才能在lookbehind和lookahead中添加.+
或.*
或任何保留的正则表达式?
答案 0 :(得分:2)
由于您只使用正面外观,因此可能会将所有外观替换为非捕获组(?:)
:
(?:<L.+>)([\s\S]*?)(?:</LF>)
请注意,您可能希望第一次搜索非贪婪:
(?:<L.+?>)([\s\S]*?)(?:</LF>)
答案 1 :(得分:1)
你做不到。 Lookbehinds不支持完整的正则表达式。模式必须具有固定的长度,但如果您使用的是替代模式(使用|
),则每个模式的长度不必与其他模式相同:
/(?<=foo|quux|foobar)duck/