1

次の文字列は一致する必要があります

das is<C strike ><c1>t ein text </c1></C><C u ><c1>der </c1></C><C b u ><c1>hier </c1></C>im <C i u ><c1>editor </c1></C><u></u>steht

私の正規表現は機能しません

>(.*?)<

それはタグ間のすべてのテキストに一致しますが、結果に従うだけで済みます。興味のあるテキストだけがどのタグからのワープでもなかったからです (このサンプルでは のように)

match[0] ------> das is
match[1] ------> im 
match[2] ------> steht

しかし、私はこれになります:

match[0] ------> das is
match[1] ------> t ein text 
match[2] ------> der 
match[3] ------> hier 
match[4] ------> im 
match[5] ------> editor 
match[6] ------> steht
4

1 に答える 1

0

別の質問でこの正規表現を提案しましたが、これはあなたのケースに完全に適合すると思います:

(?:(?![^<>]*(?:>))[^<])+

正規表現101のデモ

ところで使用preg_match_all

編集:これを試すことができます:

([^<>]+)(<[^>]+>(?:[^<>]*|(?2))</[^>]+>)*

viper-7 デモ

または別の正規表現:

(?:(?![^<>]*(?:>))[^<](?![^<>]*</))+
于 2013-10-01T08:17:30.330 に答える