+1
Hỏi về regex
E đang có 1 một expression và regex như sau:
expression = "ROUND(SUM(F9:I9)/2,0)"
elements = expression.scan /[A-Z]+(?:\()[\(\)\w+\+\-\*\/\d+<=>\.\,\:\$%]+\)|[\w+\+\-\*\/\d+<=>\.\:\$%]+/
E muốn elements là split của expression với kết quả là:
["ROUND", "(", "SUM", "(", "F9", ":", "I9", ")", "/", "2,0", ")"]
Nhưng như trên đang ra empty, có anh chị nào pro regex chỉ giúp e với ạ. Thanks!
2 CÂU TRẢ LỜI
+3
Mình thấy string trong Ruby cũng có hàm split như trên javascript, bạn thử dùng cách của mình ở trên xem sao?
expression = "ROUND(SUM(F9:I9)/2,0)"
elements = expression.split(/(\(|\)|\:|\/)/)
+3
text = "ROUND(SUM(F9:I9)/2,0)"
elements = text.scan /\d+[,.]?\d+|\w+|\W/
Kết quả:
=> ["ROUND", "(", "SUM", "(", "F9", ":", "I9", ")", "/", "2,0", ")"]
Trong đó, mình định nghĩa text đầu vào của bạn thành 3 loại:
- Số thực: \d+[,.]?\d+ (ví dụ 2.2 hoặc 2,22)
- chữ và số liền nhau: \w+
- phần còn lại: \W
Regex này có áp dụng cho cái expression động k anh?
@Black.Box là sao bạn nhỉ?
Bạn đang dùng ngôn ngữ lập trình nào vậy?
@huukimit Mình dùng Ruby bạn à
@Black.Box Mình tưởng bạn dùng javascript thì làm như sau sẽ ra kết quả như mong muốn:
@Black.Box Mình thấy string trong Ruby cũng có hàm
split
như trên javascript, bạn thử dùng cách của mình ở trên xem sao?