Haskell:
Sử dụng biểu thức chính quy
Cách thực hiện:
Trong Haskell, bạn có thể sử dụng regex với gói regex-tdfa
. Ở đây, chúng tôi bắt số từ một chuỗi.
import Text.Regex.TDFA ((=~))
main :: IO ()
main = do
let text = "Đơn hàng 531 có 2 mặt hàng"
let numbers = text =~ "[0-9]+" :: [String]
print numbers
Kết quả:
["531","2"]
Để thay thế văn bản, bạn có thể sử dụng subRegex
từ regex-compat
.
import Text.Regex (subRegex, mkRegex)
main :: IO ()
main = do
let text = "Xin chào, 2023!"
let regex = mkRegex "[0-9]+"
let newText = subRegex regex text "NĂM"
putStrLn newText
Kết quả:
Xin chào, NĂM!
Tìm hiểu sâu hơn
Biểu thức chính quy có từ những năm 1950, được hình thành bởi nhà toán học Stephen Kleene. Mặc dù Haskell xuất hiện muộn hơn, giờ đây nó có một bộ sưu tập các thư viện regex phong phú như regex-tdfa
cho regex POSIX, và regex-pcre
cho khả năng tương thích với Perl. Các lựa chọn thay thế cho regex bao gồm các thư viện tổ hợp phân tích cú pháp như parsec
, có thể cung cấp độ dễ đọc và bảo dưỡng cao hơn. Regex trong Haskell không được xây dựng vào cú pháp của ngôn ngữ mà được cung cấp thông qua các thư viện này.
Xem thêm
- Thư viện Hackage:
- regex-tdfa: http://hackage.haskell.org/package/regex-tdfa
- regex-compat: http://hackage.haskell.org/package/regex-compat
- regex-pcre: http://hackage.haskell.org/package/regex-pcre
- Wiki Haskell về biểu thức chính quy: https://wiki.haskell.org/Regular_expressions
- Sách “Real World Haskell” của Bryan O’Sullivan, Don Stewart, và John Goerzen để hiểu sâu hơn: http://book.realworldhaskell.org/