在Lookbehind中使用Metachars,(?< = test this zzzz。+ L)

时间:2011-12-10 11:07:09

标签: php regex

文字是这样的:

$string = "  <L UXUHSXUS>importantText</L>";

我想在PHP Regular Expression中使用lookbehind功能 但是每当我尝试放置。+或任何正则表达式时它都会产生错误

preg_match_all('%(?<=<L.+>)([\s\S]*?)(?=</LF>)%',$string, $matches);

这会产生错误。

我应该怎样做才能在lookbehind和lookahead中添加.+.*或任何保留的正则表达式?

2 个答案:

答案 0 :(得分:2)

由于您只使用正面外观,因此可能会将所有外观替换为非捕获组(?:)

(?:<L.+>)([\s\S]*?)(?:</LF>)

请注意,您可能希望第一次搜索非贪婪:

(?:<L.+?>)([\s\S]*?)(?:</LF>)

答案 1 :(得分:1)

你做不到。 Lookbehinds不支持完整的正则表达式。模式必须具有固定的长度,但如果您使用的是替代模式(使用|),则每个模式的长度不必与其他模式相同:

/(?<=foo|quux|foobar)duck/