Сопоставление с образцом регулярных выражений
Я пытаюсь найти некоторые шаблоны стиля кодирования в моем решении. Случай использования заключается в том, что мне нужно заменить все конкатенации строк на 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]*"?))*;
Здесь я предположил, что переменная может начинаться с подчеркивания или буквенного символа. Вы можете внести некоторые изменения в него, если вам нужно.
Принимая во внимание соглашения об именах переменных, имя переменной может начинаться с _
или же [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.