Vài chiêu regex căn bản với Ruby
Ruby
116
regex
14
White

Ngoc Dao viết ngày 21/03/2016

Lúc trước mình được bạn trangia61 chia sẻ những chiêu này.

Tìm vị trí trong chuỗi khớp với pattern

s = "/usr/etc"
idx = s =~ /etc/
# => 5

s =~ /etc/ sẽ trả về:

  • Vị trí đầu tiên trong chuỗi s khớp với pattern /etc/.
  • Nếu không khớp thì kết quả là nil.

Kiểm tra xem có khớp với pattern không

s = "/usr/etc"
if s =~ /etc/
  puts "condition satisfied"
else
  puts "not satisfied"
end
# => condition satisfied

Đoạn mã trên giống đoạn mã ở phần "tìm vị trí". Lí do là điều kiện if sẽ thỏa mãn ngay cả kết quả trả về là số 0 (vị trí đầu tiên trong chuỗi). Nếu không khớp, kết quả là nil, thì if sẽ không thỏa mãn.

Thay thế

"abc".gsub(/b/, "d")
#  => "adc"

Trích

s = "xxx yyy zzz"
s =~ /^(.+) .+? (.+)/

puts $1
#  => "xxx"

puts $2
#  => "zzz"

Để trích ra ta dùng dấu ngoặc. Nếu khớp, phần dấu ngoặc đầu tiên sẽ được trích ra thành biếtn $1. Tương tự với $2.

Backreference

Chiêu backreference này hơi cao một chút.

Giả sử bạn muốn khớp với pattern chuỗi gì đó được kẹp giữa 2 dấu " (nháy kép) hoặc 2 dấu '(nháy đơn).

Nếu viết là:

s = '"Hello"'
s =~ /("|')(.*?)("|')/
puts $2
# => Hello

Thì ngoài khớp với "Hello"'Hello', nó sẽ khớp với cả "Hello''Hello".

Ta sửa lại thành:

s =~ /("|')(.*?)\1/

\1 diễn tả là cái trong dấu ngoặc đầu tiên sẽ được trích ra, cho phép ta dùng tiếp nó vào trong pattern. Đó là lí do chiêu này gọi là "back" và "reference".

Bình luận


White
{{ comment.user.name }}
Bỏ hay Hay
{{comment.like_count}}
Male avatar
{{ comment_error }}
Hủy
   

Hiển thị thử

Chỉnh sửa

White

Ngoc Dao

102 bài viết.
300 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
66 8
Làm thế nào để nâng cấp trang web mà không làm gián đoạn dịch vụ? Đây là câu hỏi phỏng vấn các công ty lớn thường hỏi khi bạn xin vào vị trí làm lậ...
Ngoc Dao viết hơn 2 năm trước
66 8
White
42 1
Bài viết này giải thích sự khác khác nhau giữa hai ngành khoa học máy tính (computer science) và kĩ thuật phần mềm (software engineering), hi vọng ...
Ngoc Dao viết hơn 2 năm trước
42 1
White
38 2
Nếu là team leader, giám đốc công ty hay tướng chỉ huy quân đội, vấn đề cơ bản bạn gặp phải là “hướng mọi người đi theo con đường bạn chỉ ra”. Thử...
Ngoc Dao viết hơn 2 năm trước
38 2
Bài viết liên quan
White
8 6
Chưa xem phần 2? Xem (Link) Trong bài viết này tôi giới thiệu cho các bạn về khái niệm function arity, một cách gọi mĩ miều của số lượng argument ...
Lơi Rệ viết 3 năm trước
8 6
White
8 1
Tiếp theo (Link) Mình sẽ hướng dẫn cách test căn bản cho API mình tạo. Thật ra mà nói thì mình phải viết test trước khi làm nhưng mà để tránh việc...
My Mai viết hơn 3 năm trước
8 1
White
4 2
__Chú thích__: Đây là bản dịch tiếng Việt của bài viết gốc của tôi. Nếu bạn muốn xem bản tiếng Anh, xin hãy trỏ tới URL (Link) Lời mở (Link) là ...
Lơi Rệ viết hơn 3 năm trước
4 2
{{like_count}}

kipalog

{{ comment_count }}

bình luận

{{liked ? "Đã kipalog" : "Kipalog"}}


White
{{userFollowed ? 'Following' : 'Follow'}}
102 bài viết.
300 người follow

 Đầu mục bài viết

Vẫn còn nữa! x

Kipalog vẫn còn rất nhiều bài viết hay và chủ đề thú vị chờ bạn khám phá!