Подчеркнем, чтобы CamelCase RegEx

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

Что бы RegEx сделать это?

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

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

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

4 ответа

У меня была эта проблема, но мне нужно также обработать преобразование полей, таких как 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

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

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

В качестве примера:

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

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

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

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

Могут быть более элегантные критерии выбора, но я хотел, чтобы все было просто.

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