0

リソース キーを評価する内部関数呼び出しがあります。それらをテキストファイルとして解析することに興味があります。

私のパターンはTranslate.Key(StuffToGrab)translatekey(StuffToGrab)caption=StuffToGrabheader=StuffToGrabそして最もトリッキーなパターンです。<%$ Resources:Resource, StuffToGrab %>

私が思いついた正規表現があります:

Translate.Key(\S+)
TranslateKey(\S+)
caption="".+?""
headerName="".+?""
<%\$\s*Resources:.+?%>

ただし、「StuffToGrab」は返されず、削除する必要がある他の情報が返されないため、プロセスが遅くなります。

4

1 に答える 1

1

「StuffToGrab」だけが必要な場合、実際に実行したいのは、(実際にそれらの文字に一致させるのではなく) 特定の文字が前にあるテキストに一致させることです。ゼロ幅アサーション、具体的には後読みを使用して、.NET でこれを行うことができます。(?<=precedingchars)

括弧は特殊文字ですが、\Sたまたま一致するだけです。それでも、明示的に指定したい場合があります。

例:

(?<=Translate.Key\()[^)]+
(?<=TranslateKey\()[^)]+
(?<=caption=")[^"]+
(?<=headerName=")[^"]+
(?<=<%\$\s*Resources:\s*).*?(?=\s*%>)

ここで実際の例を参照してください: http://fiddle.re/fph0a

于 2013-08-09T19:16:48.530 に答える