Подчеркнем, чтобы CamelCase RegEx - PullRequest
1 голос
/ 28 марта 2012

Наши стандарты изменились, и я хочу сделать «найти и заменить», скажем, в Dreamweaver (он позволяет использовать RegEx, или мы только что получили Visual Studio 2010, если он позволяет выполнять поиск по RegEx) для всех подчеркиваний и camelCase их.

Каким будет RegEx, чтобы сделать это?

RegEx сбивает меня с толку.Мне определенно нужно кое-что изучить.

Заранее спасибо!

Обновление: Немного больше информации - я ищу в моих html, aspx, cfm или cssдокументы для любой строки, которая содержит подчеркивание и заменяет ее следующей заглавной буквой.

Ответы [ 4 ]

2 голосов
/ 15 марта 2016

У меня была эта проблема, но мне нужно также обработать преобразование полей, таких как gap_in_cover_period_d_last_5_yr, в gapInCoverPeriodDLast и найти 9 из 10 других выражений sed, которым не нравятся слова или цифры из 1 буквы.

Итак, чтобы ответить на вопрос, используйте sed.sed -s эквивалентен использованию команды: s в vim.Таким образом, приведенный ниже пример - это команда (т.е. sed -s /.../ gc

Это, похоже, сработало, хотя мне пришлось выполнить ее дважды (word_a_word станет wordA_word на первом проходе и wordAWord на втором. Sed).команды назад, слишком магические для моей магловской крови): -

s/\([A-Za-z0-9]\+\)_\([0-9a-z]\)/\1\U\2/gc
0 голосов
/ 19 декабря 2012

У меня есть решение в PHP

preg_replace("/(_)(.)/e", "strtoupper('\\2')", $str)

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

0 голосов
/ 30 августа 2014

Мне недавно пришлось столкнуться с подобной ситуацией, о которой вы спрашивали.Вот регулярное выражение, которое я использую в VIM, которое выполняет эту работу за меня:

%s/_\([a-zA-Z]\)/\u\1/g

Например:

this_is_a_test становится thisIsATest

0 голосов
/ 28 марта 2012

Я не думаю, что есть хороший способ сделать это исключительно с помощью регулярных выражений.Искать символы _ легко, что-то вроде ._.должно работать, чтобы найти _ с чем-то с обеих сторон, но вам нужна более мощная система сценариев, чтобы изменить регистр символа, следующего за _.Я предлагаю Perl:)

...