Regex thay thế chữ hoa bằng chữ thường


220

Tôi đang cố gắng thay thế các chữ cái viết hoa bằng các chữ cái viết thường tương ứng bằng regex. Vậy nên

EarTH:   1,
MerCury: 0.2408467,
venuS:   0.61519726,

trở thành

earth:   1,
mercury: 0.2408467,
venus:   0.61519726,

trong văn bản cao siêu. Làm thế nào tôi có thể viết hoa chữ cái chỉ trong các từ có cả chữ thường và chữ hoa? Vì vậy mà nó ảnh hưởng venUsvà không VENUS.

Câu trả lời:


393

Bạn có thể:

Tìm: (\w) Thay thế bằng:\L$1

Hoặc chọn văn bản, ctrl+ K+ L.


7
siêu. rất hữu ích. Bạn có thể vui lòng chỉ ra một số tài nguyên liệt kê các biến đổi như '\ L' không?
Codious-JR

17
Sublime sử dụng Boost cho hỗ trợ RegEx của nó, đây là các tài liệu cho các chuỗi định dạng như \ L: boost.org/doc/libs/1_44_0/libs/regex/doc/html/boost_regex/ tựa
Alex K.

4
Và trong IntelliJ
Patrick

11
Lưu ý: Để đi đến chữ hoa, bạn sẽ cần\U
takanuva15

2
Để chỉ viết thường một tham số, đặt \ E sau nó để kết thúc phần chữ thường: $1\L$2\E$3
Michael

129

Tôi đoán điều này cũng có thể có ích cho những người khác:

tìm thấy:

  • ([A-Z])(.*)

thay thế:

  • \L$1$2-> sẽ chuyển đổi tất cả các chữ cái trong $1$2sang chữ thường
    NHƯNG
  • \l$1$2-> sẽ chỉ chuyển đổi chữ cái đầu tiên $1thành chữ thường và để mọi thứ khác như cũ

Tương tự với chữ hoa \U\u


7
\l$1$2sẽ chỉ làm cho toàn bộ $1chữ thường trong trường hợp này ở đây, vì $ichỉ chứa một chữ cái. \l=> chữ cái đầu tiên viết thường và \u=> chữ cái đầu tiên viết hoa Ở đâu \U\Ilàm điều đó cho tất cả các chữ cái sau đây.
Raisch

5
Lưu ý rằng \Echấm dứt một \Lhoặc \Utrình tự.
Ludovic Kuty

77

Trước khi tìm kiếm với regex like [A-Z], bạn nên nhấn nút phân biệt chữ hoa chữ thường (hoặc Alt+ C) (vì gợi ý độc đáo sẽ được chỉnh sửa trong câu trả lời được chấp nhận). Để rõ ràng, tôi để lại một vài ví dụ khác:

  1. Viết hoa chữ
    • Tìm: (\s)([a-z])( \scũng khớp với các dòng mới, tức là "venuS" => "VenuS")
    • Thay thế: $1\u$2
  2. Lời nói thiếu văn hóa
    • Tìm thấy: (\s)([A-Z])
    • Thay thế: $1\l$2
  3. Xóa vỏ lạc đà (ví dụ: cAmelCAse => camelcAse => lạc đà)
    • Tìm thấy: ([a-z])([A-Z])
    • Thay thế: $1\l$2
  4. Chữ thường trong các từ (ví dụ: LowerCASe => Chữ thường)
    • Tìm thấy: (\w)([A-Z]+)
    • Thay thế: $1\L$2
    • Thay thế thay thế: \L$0
  5. Chữ in hoa trong các từ (ví dụ: UpperCASe => uPPERCASE)
    • Tìm thấy: (\w)([A-Z]+)
    • Thay thế: $1\U$2
  6. Chữ hoa trước (ví dụ: UpperCase => UPPERCase)
    • Tìm thấy: (\w+)([A-Z])
    • Thay thế: \U$1$2
  7. Chữ thường (ví dụ: LOWERCase => lowCase)
    • Tìm thấy: (\w+)([A-Z])
    • Thay thế: \L$1$2
  8. Viết hoa phần còn lại (ví dụ: UpperCase => UpperCASE)
    • Tìm thấy: ([A-Z])(\w+)
    • Thay thế: $1\U$2
  9. Viết thường phần còn lại (ví dụ: lOWERCASE => lOwercase)
    • Tìm thấy: ([A-Z])(\w+)
    • Thay thế: $1\L$2
  10. Shift-phải-chữ hoa (ví dụ Case => cAse => caSe => casE)
    • Tìm thấy: ([a-z\s])([A-Z])(\w)
    • Thay thế: $1\l$2\u$3
  11. Shift-left-in hoa (ví dụ CasE => CaSe => CAse => Case)
    • Tìm thấy: (\w)([A-Z])([a-z\s])
    • Thay thế: \u$1\l$2$3

Về câu hỏi (trận đấu từ có ít nhất một chữ hoa và một chữ cái thường và làm cho họ thành chữ thường), bình luận, câu trả lời leemour củacâu trả lời đúng . Chỉ cần làm rõ, nếu chỉ có một nhóm để thay thế, bạn chỉ có thể sử dụng ?:trong các nhóm bên trong (tức là các nhóm không chụp ) hoặc tránh tạo ra tất cả:

  • Tìm thấy: ((?:[a-z][A-Z]+)|(?:[A-Z]+[a-z])) HOẶC([a-z][A-Z]+|[A-Z]+[a-z])
  • Thay thế: \L$1

2016-06-23 Chỉnh sửa

Tyler đề xuất bằng cách chỉnh sửa câu trả lời này một biểu thức tìm thay thế cho # 4:

  • (\B)([A-Z]+)

Theo tài liệu , \Bsẽ tìm kiếm một ký tự không nằm trong ranh giới của từ (nghĩa là không ở đầu và không ở cuối). Bạn có thể sử dụng nút Thay thế Tất cả và nó thực hiện chính xác giống như khi bạn có (\w)([A-Z]+)biểu thức tìm.

Tuy nhiên, nhược điểm của \Bnó là không cho phép thay thế một lần, có lẽ do hạn chế "không giới hạn" của tìm kiếm (vui lòng chỉnh sửa điều này nếu bạn biết lý do chính xác).


2

Biểu hiện thông thường

Tìm :\w+

Thay thế :\L$0

Sublime Text sử dụng công cụ Biểu thức chính quy tương thích (PCRE) Perl từ thư viện Boost để cấp nguồn cho các biểu thức chính quy trong bảng tìm kiếm.

\L Chuyển đổi mọi thứ thành chữ thường

$0 Nhóm chụp


Hãy làm cho câu trả lời đầy đủ, không chỉ là một câu trả lời mã mà không có lời giải thích.
petezurich

1

Trong BBEdit hoạt động này (ví dụ: thay đổi giá trị ID thành chữ thường):

Tìm kiếm bất kỳ giá trị: <a id="(?P<x>.*?)"></a> Thay thế bằng cùng trong chữ thường:<a id="\L\P<x>\E"></a>

Đã: <a id="VALUE"></a> Trở thành:<a id="value"></a>


0

Thử cái này

  • Tìm thấy: ([A-Z])([A-Z]+)\b
  • Thay thế: $1\L$2

Đảm bảo độ nhạy trường hợp được bật (Alt + C)


Điều đó không hiệu quả. Nó phù hợp với hơn 2 chữ cái viết hoa. Nhưng tôi hiểu đó \Llà chữ thường. Tôi cập nhật câu hỏi.
leemour 23/12/13
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.