Regex: Найти / Заменить все подстроки без заданной строки раньше? - PullRequest
3 голосов
/ 23 апреля 2010

Мне нужно найти все строки без заданной строки перед ним.

Для экземпляра:

Find: "someValue"

** Все результаты с «функцией (» перед ними должны игнорироваться

Регулярное выражение Visual Studio найдет это :

value = someValue

И Игнорировать что-то похожее на это :

function(someValue)

Как лучше всего это сделать?

Спасибо за помощь!

Ответы [ 2 ]

2 голосов
/ 23 апреля 2010

Вы сказали

Регулярное выражение Visual Studio может найти это:

В сочетании с названием вашего вопроса, это заставляет меня думать, что вы пытаетесь что-то сделать в диалоге поиска и замены в Visual Studio, а не использовать регулярное выражение в приложении.

Если это так, то я думаю, вам не повезло; Регулярные выражения Visual Studio не очень мощные, и у них довольно странный синтаксис, который, кажется, больше нигде не используется!

Мой совет - либо использовать другой текстовый редактор, либо использовать регулярное выражение, описанное SilentGhost в приложении .NET (или скрипте PowerShell), чтобы заменить вас. Когда мне нужно сделать регулярные выражения в редакторе, а Studio не обрезает их, я обычно использую TextPad . Это не очень красиво, но мощно и имеет отличную поддержку макросов.

Между прочим, если вы хотите использовать PowerShell для этого, будет выполнен поиск foo.js и копирование вывода в fooNew.js:

(get-content D:\junk\foo.js) -replace
    '(?<!function\()someValue', 'someOtherValue' > D:\junk\fooNew.js
2 голосов
/ 23 апреля 2010

Вы можете использовать отрицательный взгляд:

(?<!function\()someValue
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...