Tôi muốn tạo một hàm tạo regex khớp với chuỗi tùy ý được cung cấp tại đầu vào. Ví dụ: khi tôi cho nó ăn với 123$
, nó phải khớp với nghĩa là "123$"
và không phải 123
ở cuối chuỗi.Chuỗi thoát được chuyển thành regex
def convert(xs: String) = (xs map (x => "\\"+x)).mkString
val text = """ 123 \d+ 567 """
val x = """\d+"""
val p1 = x.r
val p2 = convert(x).r
println(p1.toString)
\d+ // regex to match number
println((p1 findAllIn text).toList)
List(123, 567) // ok, numbers are matched
println(p2.toString)
\\\d\+ // regex to match "backshash d plus"
println((p2 findAllIn text).toList)
List() // nothing matched :(
Vì vậy, cuối cùng findAllIn
nên tìm \d+
trong văn bản, nhưng nó không. Có gì sai ở đây?
bạn đang cố gắng thế nào để tạo ra một regex trong kịch bản của bạn? Tôi không chắc chắn về câu hỏi. Trong Java, bạn cần phải thoát \ bằng cách khác \ ví dụ: khớp khoảng trắng \\ s. Không chắc chắn về ngôn ngữ scala. –
Làm thế nào nó sẽ tìm thấy '' \ d + '' (cú pháp) trong '' văn bản'' khi sau này không chứa '' + ''? –
@mhs: ups, typo. Nhưng nó vẫn không hoạt động. –