-1

vb.net から PHP ファイル内の PHP 変数を見つけて置き換えようとしています。ループ内でこれを正常に実行します。

"\B\$foo\b"
"\B\$boo\b"
.....

Smarty スタイル ファイルを読み取るときに、置換を除外したいと考えています。

Smarty 変数は PHP 変数に似ていますが、{ および } 文字内にあります。

たとえば、このテキストで $foo を検索して置換したいが、{$boo} には触れないでください:

これは単なる $foo の例であり、{$boo} ではありません!

vb.netで機能する正しい正規表現を知る必要があります

4

2 に答える 2

0

ルックアラウンドのある次の正規表現を使用します。

(?<!\{)\B\$foo\b(?!\})

ルックアラウンド チュートリアル: http://www.regular-expressions.info/lookaround.html

編集:私はバランシンググループを使用したいと思っていますが、簡単にするために使用しません。あなたのコメントによる私の解決策は次のとおりです。

(?<=(?:^|\})[^{]*)\B\$foo\b(?=[^}]*(?:$|\{))
于 2013-06-07T16:50:23.843 に答える
0

{ と } が負の後読みと先読みによって一致しないように、正規表現を少し変更します。

(?<!\{)\$[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*(?!\})

( ?!\})は、この前の } と一致しないことを意味します。

( ?<!\{)は、この後ろの { と一致しないことを意味します。

于 2013-06-07T16:50:36.573 に答える