Сопоставление с образцом регулярных выражений

Я пытаюсь найти некоторые шаблоны стиля кодирования в моем решении. Случай использования заключается в том, что мне нужно заменить все конкатенации строк на StringBuilder в бритве и найти все конкатенации строк в JavaScript, Мне очень трудно получить все такие строки кода, которые имеют конкатенацию строк, следующими двумя способами.

1) str = str+str2+str3+"str4 " etc;
2) str+=str2+str3+"str4 " etc;

Я пытался использовать инструмент поиска VS 2013 и искал с характером +У меня чертовски много строк. Пожалуйста, помогите мне шаблон reg ex для более 2-х стилей строк кода, чтобы по крайней мере количество строк уменьшилось. Мне трудно получить Reg Ex для более 2-х стилей кода.

3 ответа

([\w_]+[\w\d]*)(?:\s*=\s*\1{1}\s*\+\s*|\s*\+=\s*)("?[\w_]+[\w\d]*"?)(\s*\+\s*"?([\w_]+[\w\d]*"?))*;

Здесь я предположил, что переменная может начинаться с подчеркивания или буквенного символа. Вы можете внести некоторые изменения в него, если вам нужно.

https://regex101.com/r/mE9zO7/2

Возможно что-то вроде:

(\w+ = \w+\+\w)|(\w+\s?\+=\s?\w+)

Принимая во внимание соглашения об именах переменных, имя переменной может начинаться с _ или же [A-Za-z] это регулярное выражение соответствует всем таким случаям конкатенации.

Regex: ([A-Za-z_]\w+)\s*\+?=\s*(\1\s*)?(\+?\s*(([A-Za-z_]\w+)|"?.*?"?))*;

Объяснение:

  • ([A-Za-z_]\w+) соответствует имени переменной, начинающейся с _ или же [A-Za-z] сопровождаемый любым символом из word учебный класс.

  • \s*\+? Необязательный whitespace а также + для сопоставления стенографического оператора конкатенации.

  • \s*(\1\s*)? Если оператор сокращения не используется, то это будет соответствовать обычному способу объединения.

  • (\+?\s*(([A-Za-z_]\w+)|"?.*?"?))* последующие имена переменных, которые должны присутствовать. Это может быть ноль или много. Это также может быть литеральная строка, как "hello world" а также соответствует данным HTML.

Regex101 Demo

Другие вопросы по тегам