Ответ 1
Ты можешь:
Найти: (\w)
Заменить с помощью: \L$1
Или выберите текст, ctrl + K + L.
Я пытаюсь заменить прописные буквы соответствующими строчными буквами с помощью regex. Так что
EarTH: 1,
MerCury: 0.2408467,
venuS: 0.61519726,
становится
EarTH: 1,
MerCury: 0.2408467,
venuS: 0.61519726,
в Sublime Text. Как я могу писать буквы только в словах, содержащих как нижние, так и прописные буквы? Так что это влияет на venUs
, а не venUs
.
Ты можешь:
Найти: (\w)
Заменить с помощью: \L$1
Или выберите текст, ctrl + K + L.
Я подумал, что это может пригодиться и для других:
находить:
([AZ])(.*)
заменить:
\L$1$2
→ преобразует все буквы в $1
и $2
в нижний регистр \l$1$2
→ преобразует только первую букву в $1
в нижний регистр и оставит все остальное как То же самое происходит и с прописными буквами с \U
и \u
Перед поиском с регулярным выражением, например [A-Z]
, вы должны нажать кнопку чувствительной к регистру (или Alt + C) (как leemour красиво предлагается для редактирования в принятом ответе). Чтобы быть ясным, я оставляю несколько других примеров:
(\s)([a-z])
(\s
также соответствует новым строкам, т.е. "venuS" = > "VenuS" )$1\u$2
(\s)([a-z])
$1\l$2
([a-z])([A-Z])
$1\l$2
(\w)([A-Z]+)
$1\l$2
\L$0
(\w)([A-Z]+)
$1\u$2
(\w+)([A-Z])
\U$1$2
(\w+)([A-Z])
\L$1$2
([A-Z])(\w+)
$1\u$2
([A-Z])(\w+)
$1\l$2
([a-z\s])([A-Z])(\w)
$1\l$2\u$3
(\w)([A-Z])([a-z\s])
\u$1\l$2$3
Что касается вопроса (совпадение слов с хотя бы одним прописным и одним строчным буквом и сделать их строчными), leemour comment-answer правильный ответ. Чтобы уточнить, если есть только одна группа для замены, вы можете просто использовать ?:
во внутренних группах (т.е. группы не захвата) или вообще не создавать их
((?:[a-z][A-Z]+)|(?:[A-Z]+[a-z]))
ИЛИ ([a-z][A-Z]+|[A-Z]+[a-z])
\L$1
Tyler, предлагаемый путем редактирования этого ответа альтернативным выражением поиска для # 4:
(\B)([A-Z]+)
Согласно документации, \B
будет искать символ, который не находится на границе слова (то есть не в начале и не в конце). Вы можете использовать кнопку "Заменить все", и она делает то же самое, что и если вы нашли (\w)([A-Z]+)
как выражение поиска.
Однако недостатком \B
является то, что он не допускает отдельных замен, возможно, из-за ограничения "не границ" (пожалуйста, отредактируйте это, если вы знаете точную причину).
Регулярное выражение
Найти: \w+
Заменить: \L$0
Sublime Text использует движок Perl Compatible Regular Expressions (PCRE) из библиотеки Boost для управления регулярными выражениями в панелях поиска.
\L
Преобразует все до нижнего регистра
$0
Группы захвата
Попробуйте это
([A-Z])([A-Z]+)\b
$1\L$2
Убедитесь, что чувствительность к регистру включена (Alt + C)
В BBEdit это работает (например: изменение идентификационных значений в нижнем регистре):
Найти любое значение: <a id="(?P<x>.*?)"></a>
Заменить на то же самое в нижнем регистре: <a id="\L\P<x>\E"></a>
Был: <a id="VALUE"></a>
Стал: <a id="value"></a>