2013-06-06 3 views
-5

Это не работает для меня:Найти и заменить знак доллара

  dim regex as Regex = New Regex("\b\$_GET\b") 
      src = regex.Replace(src, "somthing") 

возвращает исходную строку.

я вышел из памяти, когда попробуете это в длинном файле:

  dim regex as Regex = New Regex("\$\b_GET\b") 
      src = regex.Replace(src, "somthing") 

Примечание: попытаться найти и заменить PHP переменные, как $_GET, $foo и т.д.

+7

Ну, что же делать? Он ничего не делает? Сделать ошибку? Сбой компьютера? Сделать летающих обезьян падать с неба? Дайте вам бесплатные вафли? Просьба уточнить. – Doorknob

+4

@Doorknob Я хочу бесплатные вафли, когда мое регулярное выражение не срабатывает :( – Walls

+0

что не работает означает возвратить исходную строку. Я также добавил новые вещи. – exim

ответ

0

проблема, перед тем «$ _GET» нет word boundary\b.

Словесная граница соответствует изменению от символа слова до символа, отличного от слова, или наоборот. Я предполагаю, что до «$ _GET» есть либо начало строки, либо пробел для обеих позиций (между StartOfString и «$», «пробелы» и «$») нет границы слова.

Ваш второй пример должен иметь вид работы, поскольку между «$» и «_» существует граница слова.

Вместо этого вы можете использовать обратный якорь.

dim regex as Regex = New Regex("\B\$_GET\b") 

\B потребует несловообразующим символа перед «$», так как она является отрицанием \b.

+0

работает за $ _GET, но не для $ foo, например, я пытаюсь заменить php-переменные. Обновление – exim

+0

: работает и для $ foo и т. д., но вышло из памяти для длинных файлов – exim

0

Граница слова (\b) не очень полезно возле знака доллара, просто используйте:

dim regex as Regex = New Regex("\$_GET\b") 
0

Проблема заключается в word boundary\b в начале регулярного выражения, код должен быть:

dim regex as Regex = New Regex("\$_GET\b") 
Смежные вопросы