1

私は次の文字列形式を持っています:

[[TEXT|TEXT]] <-- the "|TEXT" is optional

そしてこれまでのところ、うまく機能するのは次のとおりです。

/([^\[]+)(?=\]\])/

どちらが返されますか:

TEXT
or
TEXT|TEXT

「|TEXT」が含まれていて、「|」の左側のみに一致する場合は、「|TEXT」まで一致させたいです。または「]]」のどちらが先かによって異なります。

助言がありますか?

4

1 に答える 1

0

更新-にあるものだけを一致させ、そこに[[]]ある場合は含めない|TEXT場合は、次のことを試してください。

([^|\[]+?)(?=(?:\]\]|\|))

これは多かれ少なかれあなたの最初の正規表現ですが、それは|またはで止まり]]ます。

または、正規表現フレーバーが後読みをサポートしている場合は、次のことができます。

((?<=\[\[)([^\|]+?)(?=(?:\]\]|\|))

[[これは、あなたがそれ以降一致することを強制するだけです。本当に必要というわけではありませんが、もう少し不明なコンテンツプルーフです。

于 2012-01-22T00:02:01.510 に答える