-1

我正在尝试从 vb.net 查找和替换 PHP 文件中的 PHP 变量。我在一个循环中成功地做到了这一点:

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

现在我想在阅读 Smarty 样式文件时排除替换。

Smarty 变量类似于 PHP 变量,但在 { 和 } 字符内。

例如想在此文本中查找和替换 $foo,但不要触摸 {$boo}:

这只是 $foo 而不是 {$boo} 的示例!

需要知道在 vb.net 中有效的正确正则表达式

4

2 回答 2

0

对您的正则表达式进行一个小改动,以确保 { 和 } 不通过否定的后向和前瞻匹配:

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

( ?!\})表示在此之前不匹配 }。

( ?<!\{)表示不匹配 { 后面的。

于 2013-06-07T16:50:36.573 回答
0

使用这个有环视的正则表达式:

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

环视教程:http ://www.regular-expressions.info/lookaround.html

编辑:我很想使用平衡组,但我不会为了简单起见,所以根据您的评论,这是我的解决方案:

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