Có triển khai regex nào cho phép thay thế nhóm trong regex bằng phiên bản chữ thường không?thực hiện regex để thay thế nhóm bằng phiên bản chữ thường
Trả lời
Trong Perl, bạn có thể làm:
$string =~ s/(some_regex)/lc($1)/ge;
Tùy chọn /e
gây các biểu hiện thay thế để được hiểu như mã Perl để được đánh giá, có giá trị trả về được sử dụng như giá trị thay thế cuối cùng. lc($x)
trả về phiên bản thấp hơn của $x
. (Không chắc chắn nhưng tôi giả định lc()
sẽ xử lý các ký tự quốc tế chính xác trong các phiên bản Perl gần đây.)
/g
có nghĩa là khớp trên toàn cầu. Bỏ qua số g
nếu bạn chỉ muốn thay thế một lần.
Trong Perl, có
$string =~ tr/[A-Z]/[a-z]/;
Hầu hết Regex triển khai cho phép bạn vượt qua một chức năng gọi lại khi thực hiện một thay thế, vì vậy bạn chỉ có thể trả về một phiên bản chữ thường của trận đấu từ callback.
s/most/some/gi? – Rhubbarb
Nếu phiên bản regex của bạn hỗ trợ nó, bạn có thể sử dụng \ L, như vậy trong một vỏ POSIX:
sed -r 's/(^.*)/\L\1/'
+1 cho giải pháp không phải Perl. Hoạt động trong Kate: "\ L \ 1" –
Điều này dường như hoạt động với số lượng bộ dụng cụ regex đáng ngạc nhiên, ngay cả khi bạn không ở trong môi trường giống như vỏ. – Tim
@Tim: Đồng ý, ngay cả Notepad ++ cũng hỗ trợ nó. –
Nếu bạn đang sử dụng một trình soạn thảo như SublimeText hoặc TextMate , có một cơ hội tốt bạn có thể sử dụng
\L$1
làm địa chỉ thay thế của bạn, nơi $1
dùng để chỉ thứ gì đó từ biểu thức chính quy mà bạn đặt dấu ngoặc đơn. Ví dụ , đây là điều tôi đã sử dụng để viết hoa tên trường trong một số SQL, nhận mọi thứ ở bên phải của 'dưới dạng' ở cuối dòng bất kỳ. Đầu tiên là "tìm thấy" biểu thức chính quy:
(as|AS) ([A-Za-z_]+)\s*,$
và sau đó là biểu hiện thay thế:
$1 '\L$2',
Nếu bạn sử dụng Vim (hoặc có lẽ gvim), sau đó bạn sẽ muốn sử dụng \L\1
thay vì \L$1
, nhưng có một nếp nhăn mà bạn sẽ cần phải nhận thức được: Vim đảo ngược cú pháp giữa các ký tự dấu ngoặc đơn và ký tự dấu ngoặc đơn thoát. Vì vậy, để chỉ định một phần của cụm từ thông dụng được đưa vào thay thế ("đã chụp"), bạn sẽ sử dụng \(
ở đầu và \)
ở cuối. Hãy suy nghĩ của \
là — thay vì thoát một ký tự đặc biệt để biến nó thành chữ cái — đánh dấu sự bắt đầu của một ký tự đặc biệt (như với \s
, \w
, \b
và vv). Vì vậy, nó có vẻ kỳ lạ nếu bạn không quen với nó, nhưng nó thực sự là hoàn toàn hợp lý nếu bạn nghĩ về nó theo cách Vim.
Tôi đã thử nghiệm điều này trong cả hai TextMate và SublimeText và nó hoạt động như nó vốn có, nhưng một số biên tập viên sử dụng
\1
thay vì
$1
. Hãy thử cả hai và xem trình soạn thảo của bạn sử dụng.
Tôi vừa lấy regex này ra khỏi lịch sử của mình. Tôi luôn luôn chỉnh regexen trong khi sử dụng chúng, và tôi không thể hứa với phiên bản cuối cùng, vì vậy tôi không cho rằng nó phù hợp với mục đích được mô tả, và đặc biệt là với SQL được định dạng khác với SQL tôi đang làm, một ví dụ cụ thể về giảm tải trong biểu thức chính quy. YMMV. UAYOR.
Tốt, Intellij IDEA cũng hỗ trợ điều này –
- 1. Làm thế nào để thay thế chữ in hoa thành chữ thường bằng regex trong Eclipse?
- 2. CMake Regex để chuyển đổi chữ thường thành chữ thường
- 3. eclipse - regex: thay thế nhiều nhóm
- 4. regex để thay đổi liên kết href thành chữ thường
- 5. Regex: Đặt tên nhóm và thay thế
- 6. Android thay thế bằng regex
- 7. Cách tìm thay thế bằng các nhóm regex trong vim
- 8. Thay thế không phân biệt chữ hoa chữ thường
- 9. Làm thế nào để sử dụng Visual Studio Tìm và Thay thế để chuyển đổi chữ hoa chữ thường thành chữ thường với Regex
- 10. Thay thế bằng Regex
- 11. Đang cố gắng tìm các nhóm chữ cái bằng regex
- 12. Tìm kiếm phân biệt chữ hoa chữ thường và thay thế bằng sed
- 13. Làm cách nào để thực hiện tìm kiếm regex và thay thế bằng văn bản cao cấp 2?
- 14. Thay thế Regex bằng Emacs
- 15. Làm thế nào ruby có thể thực hiện tác vụ này (tìm kiếm chuỗi không phân biệt chữ hoa chữ thường và thay thế bằng Ruby)?
- 16. Làm thế nào để phát hiện chữ thường trong Python?
- 17. Python Regex ngay lập tức thay thế các nhóm
- 18. Làm cách nào để thực hiện tìm kiếm phân biệt chữ hoa chữ thường bằng cách sử dụng LIKE?
- 19. Có cách nào thay thế cho chuỗi.Địa chỉ không phân biệt chữ hoa chữ thường không?
- 20. Có thể chuyển đổi sang chữ thường bằng cách sử dụng tìm kiếm regex của Eclipse và thay thế không?
- 21. Phiên bản PHP không phân biệt chữ hoa chữ thường của file_exists()
- 22. Regex, nhóm & quantifyer
- 23. Sử dụng cụm từ thông dụng để thay thế các chữ thường được lặp lại trong python bằng một chữ thường đơn
- 24. Regex (biểu thức thông thường), thay thế sự xuất hiện thứ hai trong javascript
- 25. JS regex thay thế số
- 26. Có thể thực hiện tìm kiếm phân biệt chữ hoa chữ thường trong OpenGrok không?
- 27. Thay thế phiên bản jQuery của trang bằng Greasemonkey
- 28. LINQ to DataSet phân biệt chữ hoa chữ thường theo nhóm
- 29. Có thể thực hiện DISTINCT phân biệt chữ hoa chữ thường với SAS (PROC SQL) không?
- 30. Làm cách nào để thực hiện các số phiên bản?
tất nhiên không hoạt động đối với các ký tự quốc tế .. –
[A-Z]? Đó là một ví dụ. Điều đó nói rằng, tôi đã bình chọn cho câu trả lời của j_random_hacker. –