Я пытаюсь заменить заглавные буквы на соответствующие строчные буквы с помощью регулярных выражений. Так что
EarTH: 1,
MerCury: 0.2408467,
venuS: 0.61519726,
становится
earth: 1,
mercury: 0.2408467,
venus: 0.61519726,
в возвышенном тексте. Как я могу использовать строчные буквы только в словах, которые содержат как строчные, так и прописные буквы? Так что это влияет venUs
и нет VENUS
.
regex
sublimetext3
sublimetext2
sublimetext
leemour
источник
источник
\U
$1\L$2\E$3
Я подумал, что это может пригодиться и другим:
найти:
([A-Z])(.*)
заменить:
\L$1$2
-> преобразует все буквы в$1
и$2
строчныеНО
\l$1$2
-> будет конвертировать только первую букву$1
в нижний регистр и оставит все остальное как естьТо же самое касается заглавных букв
\U
и\u
источник
\l$1$2
будет делать только целое$1
в нижнем регистре в этом случае здесь, потому что$i
содержит только одну букву.\l
=> первая следующая буква в нижнем регистре и\u
=> первая следующая буква в верхнем регистре. Куда\U
и\I
делали это для всех следующих писем.\E
заканчивается\L
или\U
последовательность.Перед поиском с помощью регулярных выражений
[A-Z]
, вы должны нажать чувствительную к регистру кнопку (или Alt+ C) (так как лемуру приятно отредактировать в принятом ответе). Просто чтобы прояснить, я оставляю несколько других примеров:(\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 является правильным ответом . Просто чтобы уточнить, что если нужно заменить только одну группу, вы можете просто использовать ее
?:
во внутренних группах (то есть, в группах без захвата ) или вообще не создавать их:((?:[a-z][A-Z]+)|(?:[A-Z]+[a-z]))
ИЛИ([a-z][A-Z]+|[A-Z]+[a-z])
\L$1
2016-06-23 Редактировать
Тайлер предложил, отредактировав этот ответ, найти альтернативное выражение для # 4:
(\B)([A-Z]+)
Согласно документации ,
\B
будет искать символ, который не находится на границе слова (то есть не в начале и не в конце). Вы можете использовать кнопку « Заменить все» , и она делает то же самое, что(\w)([A-Z]+)
и выражение для поиска.Однако недостатком
\B
является то, что он не допускает единичных замен, возможно, из-за ограничения find «not border» (пожалуйста, отредактируйте его, если знаете точную причину).источник
Регулярное выражение
Найти :
\w+
Заменить :
\L$0
\L
Преобразует все в нижний регистр$0
Захват групписточник
В BBEdit работает это (например: изменение значений идентификаторов в нижний регистр):
Поиск любого значения:
<a id="(?P<x>.*?)"></a>
замените его тем же в нижнем регистре:<a id="\L\P<x>\E"></a>
Было:
<a id="VALUE"></a>
стало:<a id="value"></a>
источник
Попробуй это
([A-Z])([A-Z]+)\b
$1\L$2
Убедитесь, что чувствительность к регистру включена (Alt + C)
источник
\L
это строчные. Я обновил вопрос.