1

いくつかの変数が埋め込まれた文字列があり、それらの変数の名前を抽出する必要があります。私は正規表現に精通しておらず、これを機能させるのに問題があります。

文字列がどのように見えるかの例を次に示します。

Lorem ipsum dolor sit amet {%#varName1%}、consectetur adipisicing #non_var elit、sed

{%#varName2 | prop1%} do eiusmod tempor incididunt ut Labore et dolore magna aliqua

{%識別子#varName3 | prop2%}。Ut enim adminimveniam。

変数名には接頭辞が付き#、これらの区切り文字{%との中に配置され%}ます。この式を使用して、変数名を照合できます。

(?<=#)(.*?)(?=[\s\|])

ただし、これ#non_varは区切り文字の内側になく、有効な変数でもないものにも一致します。

私もこれを試しました:

(?<={% )(#(.*?)[^\s\|])(?= %})

しかし、それはとにのみ一致#varName1#varName2|prop1ます(私はその部分を必要としませんprop1)。期待される結果は次のとおりです。

varName1varName2およびvarName3

任意の提案をいただければ幸いです。

4

2 に答える 2

1

どの言語/アプリケーションが使用されているかについて言及していないので、一般的なユースケースを示します。私自身、Notepad++で試して成功しました。

正規表現を使用できます:

(\{%[^#]*#)([\w]*)(.*?%\})

ここでvarnameは、任意の長さのアルファベット、数字、およびアンダースコアで構成できます。変数名の最初の文字が数字ではないという条件を適用する場合は、次を使用します。

(\{%[^#]*#)([a-z_][\w]*)(.*?%\})

{%これにより、とを含むとの間のすべてが認識されます%}。これで、2番目に一致した部分式($2Notepad ++の場合\2、多くのプログラミング言語の場合)への逆参照を使用してを取得できvarnamesます。

入力テキストについては、

Lorem ipsum dolor sit amet {%#varName1%}、consectetur adipisicing #non_var elit、sed {%#varName2 | prop1%} do eiusmod tempor incididunt ut Labore et dolore magna aliqua {%identifier#varName3 | prop2%}。Ut enim adminimveniam。

私の検索と置換は私に与えました:

Lorem ipsum dolor sit amet varName1、consectetur adipisicing #non_var elit、sed varName2 do eiusmod tempor incididunt ut Labore et dolore magnaaliquavarName3。Ut enim adminimveniam。

于 2013-03-25T16:25:17.267 に答える
0

これを試してください-私はこれが正しいと思います:

(?<=\{%.*#)[\w|]+(?=.*%\})
于 2013-03-25T16:32:17.010 に答える