Регулярное выражение с хитрым условием

программирование регулярные выражения regexp

Добрый день!
Помогите пожалуйста с регулярным выражением.

Есть регулярное выражение для поиска целых слов:
var rx = new Regex("\b" + a + "\b"); //ищем отдельно стоящее слово

Нужно усовершенствовать его следующим образом:
В тексте переодически попадается такой фрагмент:

Resources.Load("путь/еще_путь" + переменная);

Нужно чтобы написанное выше регулярное выражение по поиску целых слов, игнорировало все что находится в кавычках между Resources.Load( и ;
Тоесть в приведенном примере 'путь' и 'еще_путь' в результат поиска не попадают, а 'переменная' попадает. Также попадает любой текст в ковычках, кроме указанного случая
(между 'Resources.Load(' и точкой с запятой).

Спасибо!

Примечание:
А можно тогда как-нибудь дополнить регулярное выражение, чтобы оно не возвращало результат, если он находится на определенной позиции строки, допустим с 17 по 30 символы?
Тогда можно будет первым проходом найти "проблемное место" и добавить диапазон в последующий запрос.
Ответы:
а что если дополнительные проверки вводить после того как тебе результат выдали? это ж убьешься такой регэксп писать)
по логике, здесь бы надо использовать negative look-behind assertion: (?<!Resources\.Load\(\S*)\bслово\b - "матчить \bслово\b только если перед ним нет Resources.Load( без пробелов".
к сожалению, паттерн для LBA должен быть фиксированной длины, т.е. нельзя использовать .*, .*, \S* и т.д.
поэтому предлагаю сделать в два подхода:
1) выкинуть из строки Resources\.Load\(\S+
2) матчить \bслово\b как обычно
Насколько я понимаю, это какая-то работа, не требующая особого быстродействия кода.
В таком случае поддерживаю rojer. Сначала вырезай все мешающее, потом уже ищи то, что надо. По мере уточнения результатов добавляй новые маски для вырезания. То есть в данном случае передавай поиску textToSearch.replace(/Resources\.Load\([^;]+;/,' ');
Обрати внимание, что маску меняю на пробел - чтобы избежать склеивания слов при данной операции.
Мои мозги не понимают этого
когда мне понадобилось нечто подобное, я сначала регулярным выражением находил то, что надо игнорировать, а в оставшемся - искал то, что нужно.


14 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.