2013-08-12 7 views
0

Я пытаюсь найти любой экземпляр строки в нашем коде, который нужно отправить функции __().Regex найти строки, не инкапсулированные с помощью __ ("")

У меня есть следующее регулярное выражение:

(\[|__\()[\'\"][\w\s\\\:]+[\'\"] 

, что соответствует:

['valid string' 
["valid::str::ing" 
__('valid\String' 
__(" v a l i d s t r i n g " 

но не:

'hel\lo there ' 
"he::he" 

мне нужно отменить матч. Я пробовал различные методы, чтобы свести на нет ([|. Раздел __(), но не имел никакого успеха

Как я могу записать выражение для соответствия строк, которые НЕ предшествуют кнопку [или __ (

?

Спасибо

+2

Недостаточно сказать, что у вас есть «регулярное выражение», вы должны указать, какой инструмент или язык вы используете. Некоторые из них поддерживают негативную нотацию, '(? ruakh

+0

Нужно ли обрабатывать гадость, как «Эй, это неожиданно»? – Wrikken

+0

@ruakh - извините, выражение будет выполнено в PHPStorm. – baiano

ответ

0

Вы можете быть в состоянии использовать отрицательное Пожалуйста, смотрите назад ':..

http://www.regular-expressions.info/lookaround.html

+1

Это не ответ. Если вам нужна дополнительная информация, прежде чем вы сможете предложить решение, попросите его в комментарии, например [ruakh did] (http://stackoverflow.com/questions/18197671/regex-to-find-strings-not-encapsulated-with# comment26669287_18197671). Такие неопределенные намеки несовместимы с SO [философия] (http://meta.stackoverflow.com/help/how-to-answer). –

0
/([^\[\(]|[^\_]\(|[^\_]_\()[\'\"][\w\s\\\:]+[\'\"]/ 

спичек строку s с ' или ", которые не имеют [ или ( впереди, но позволяет (, если это не _ перед ним, , а также позволяет _( если не перед ней второй _

Смежные вопросы