Próbuję zastąpić wielkie litery odpowiednimi małymi literami za pomocą wyrażenia regularnego. Po to aby
EarTH: 1,
MerCury: 0.2408467,
venuS: 0.61519726,
staje się
earth: 1,
mercury: 0.2408467,
venus: 0.61519726,
w Sublime Text. Jak mogę wstawiać małe litery tylko w słowach zawierających zarówno małe, jak i wielkie litery? Tak, że to wpływa, venUs
a nie VENUS
.
regex
sublimetext3
sublimetext2
sublimetext
leemour
źródło
źródło
\U
$1\L$2\E$3
Pomyślałem, że to może się przydać także innym:
odnaleźć:
([A-Z])(.*)
zastąpić:
\L$1$2
-> konwertuje wszystkie litery$1
i$2
na małeALE
\l$1$2
-> konwertuje tylko pierwszą literę$1
na małe litery i pozostawia wszystko inne bez zmianTo samo dotyczy wielkich liter z
\U
i\u
źródło
\l$1$2
tylko by cała$1
małymi literami w tej sprawie, ponieważ$i
zawiera tylko jeden list.\l
=> pierwsza następna litera do małych liter i\u
=> pierwsza następna litera do wielkich liter. Gdzie\U
i\I
robi to z następującymi literami.\E
kończy sekwencję\L
lub\U
.Przed wyszukiwaniem za pomocą wyrażenia regularnego
[A-Z]
powinieneś nacisnąć przycisk z rozróżnianiem wielkości liter (lub Alt+ C) (jak leemour ładnie sugeruje do edycji w zaakceptowanej odpowiedzi). Dla jasności zostawiam kilka innych przykładów:(\s)([a-z])
(\s
dopasowuje również nowe wiersze, tj. „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
Jeśli chodzi o pytanie (dopasuj słowa z co najmniej jedną wielką i jedną małą literą i uczyń je małymi), odpowiedź komentująca leemour jest właściwą odpowiedzią . Aby wyjaśnić, jeśli istnieje tylko jedna grupa do zastąpienia, możesz po prostu użyć
?:
w grupach wewnętrznych (tj. Grupach nie przechwytujących ) lub w ogóle uniknąć ich tworzenia:((?:[a-z][A-Z]+)|(?:[A-Z]+[a-z]))
OR([a-z][A-Z]+|[A-Z]+[a-z])
\L$1
2016-06-23 Edytuj
Tyler zasugerował, edytując tę odpowiedź, alternatywne wyrażenie dla # 4:
(\B)([A-Z]+)
Zgodnie z dokumentacją ,
\B
będzie wyglądać na znak, że nie jest na granicy tego słowa (czyli nie na początku, a nie na końcu). Możesz użyć przycisku Zamień wszystko i robi dokładnie to samo, co w przypadku(\w)([A-Z]+)
wyrażenia find.Minusem
\B
jest jednak to, że nie zezwala na pojedyncze zamiany, być może z powodu ograniczenia „nieograniczonego” znalezienia (proszę zrób to, jeśli znasz dokładny powód).źródło
Wyrażenie regularne
Znajdź :
\w+
Zamień :
\L$0
\L
Konwertuje wszystko na małe litery$0
Przechwytuj grupyźródło
W BBEdit działa to (np .: zmiana wartości identyfikatora na małe litery):
Wyszukaj dowolną wartość:
<a id="(?P<x>.*?)"></a>
Zamień na to samo małymi literami:<a id="\L\P<x>\E"></a>
Był:
<a id="VALUE"></a>
Został:<a id="value"></a>
źródło
Spróbuj tego
([A-Z])([A-Z]+)\b
$1\L$2
Upewnij się, że rozróżnianie wielkości liter jest włączone (Alt + C)
źródło
\L
to małe litery. Zaktualizowałem pytanie.