2011-12-10 8 views
0

使用テキストはこのようなものです(<=テストこのZZZZ + Lを?。):後方参照でMetachars、

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

私はPHPの正規表現 に後読み機能を使用したいと思いますが、それはエラーを生成します毎回。+または正規表現のものを入れようとするとき

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

これは誤りです。

.+または.*を追加するにはどうすればよいですか、ルックバックやルックアヘッドに予約された正規表現のものを追加するにはどうすればよいですか?

+0

[正規表現でHTMLを解析する](http://stackoverflow.com/questions/1732348/)しようとしていますか?その道の終わりには狂気だけが待っています。 – outis

+1

yeaa私は理想的ではなく、良いパーザを使う方がはるかに優れていますが、予測可能なものから来ています(したがって、正規のユーザではない)。 – Grego

答えて

2

あなただけ使用するので:あなたは(|で)代替パターンを使用している場合、各代替が他の人と同じ長さを持っている必要はありませんが、パターン(複数可)、固定長を持っている必要がありますあなたはおそらく代わりに非キャプチャグループ(?:)ですべての前後参照置き換えることができ、正前後参照:あなたが最初の検索非欲張りにしたいかもしれません

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

注:

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

これはまさに私が探していたものですが、好奇心のために、これと肯定的/否定的な視点の違いは何ですか?ありがとう! – Grego

1

できません。 Lookbehindsは完全正規表現をサポートしていません。

/(?<=foo|quux|foobar)duck/ 
関連する問題