0

一部のテキストに一致する正規表現が必要で、CTA ボタンが表示されます。私が欲しいのは、次のテキストが出力になることです:

例 1

{BUTTON text="(some text)" link="(some link)" target="(target, OPTIONAL)" class="(classes, OPTIONAL)"}

<a href="(some link)" target="(target)" class="$4">(some text)</a>

例 2

{BUTTON text="(some text)" link="(some link)" target="(target, OPTIONAL)"}

<a href="(some link)" target="(target)">(some text)</a>

例 3

{BUTTON text="(some text)" link="(some link)"}

<a href="(some link)">(some text)</a>

私自身の「解決策」はこれですが、それが「正しい」方法だとは思いません。つまり、間違いなく欠陥があります。

{BUTTON text="([a-zA-Z0-9 ]+)" link="([A-Za-z0-9\/\:\.\?\=]+)"( target=")?([a-zA-Z\_]+)?(")? ( class=")?([a-zA-Z\_]+)?(")?}
4

1 に答える 1

0

交換に含まれていないパーツには、非キャプチャ グループを使用する必要があります (または、それらすべてを考慮して交換の番号を変更します)。

{BUTTON text="([a-zA-Z0-9 ]+)" link="([A-Za-z0-9\/\:\.\?\=]+)"\s*(target="[a-zA-Z\_]+")?\s*(class="[a-zA-Z\_]+")?}

置換文字列は次のようになります。

<a href="$2" $3 $4>$1</a>

全体target="..."class="..."要素を 1 つのオプション グループにしたことに注意してください。これにより、全体を置換に置き換えることができます。

クラス名をキャプチャして、テンプレート内の他のクラスとマージする方法は次のとおりです。

{BUTTON text="([a-zA-Z0-9 ]+)" link="([A-Za-z0-9\/\:\.\?\=]+)"\s*(target="[a-zA-Z\_]+")?\s*(?:class="([a-zA-Z\_]+)")?}

<a href="$2" $3 class="c1 c2 $4">$1</a>

これは、非キャプチャ グループを使用してclass="..."要素全体を照合し、その一部のみをキャプチャし...ます。

于 2013-09-27T01:15:31.907 に答える