2016-06-30 3 views
-3

Я пытаюсь сопоставить один отдельный символ '=' с регулярным выражением.Регулярное выражение в соответствии с автономным = символ

Например, для этого кода

if(y == 5 || x = 1) { 
    Do something ... 
} 

Я хочу, чтобы соответствовать к единичному '=', а не "==". Я пробовал много комбинаций строк регулярных выражений, но я все еще не могу получить соответствие в правильной позиции.

+0

Почему вы используете regex для анализа кода? Если это не очень простой инструмент, вам нужно что-то более надежное. – TartanLlama

+0

Ищите a =, которому не предшествовало или не следовало другое =? –

+0

Если я использую этот конкретный метод, он будет соответствовать второму «=» в разделе «==». –

ответ

3

Вы можете добиться этого с помощью отрицательного просмотра назад и положительного предпросмотра:

(?<!=)=(?!=) 

Пример: https://regex101.com/r/uV5eC5/1

Для получения дополнительной информации о опережении/назад ', прочитать решение Regex lookahead, lookbehind and atomic groups

+2

Если ваш парсер регулярных выражений поддерживает это. –

+0

Спасибо за ссылку на инструмент, это должно сработать. Мне просто нужно преобразовать его в синтаксис синтаксиса C++. –

+0

Это будет работать только с библиотекой Boost или библиотекой PCRE. C++ 11 regex следует за регулярным выражением ECMAScript, которое не поддерживает look-behind. – nhahtdh

0

FBO, безусловно, является более элегантный, но если это нужно сделать в JS, у которого нет задержек, вы можете сделать это с помощью

[^=]=[^=] 

Так как это код, который вы проверяете, всегда будет символ до и после =, и поэтому этот тест, который ни один из них не является другим =.

+0

Как ваш ответ, так и его работа после преобразования его в синтаксис регулярного выражения C++. –

+1

Обратите внимание, что если вы хотите использовать замену впоследствии, это также заменит символ before и символ после '='. Таким образом, вы можете записать их как отдельные группы: '([^ =]) (=) ([^ =])', а затем использовать '$ 1 == $ 3' для замены (при условии, что вы хотите заменить' = 'на' == '). –

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