模式匹配有...
做貪婪匹配(匹配0或更多),如果我想匹配的是這樣的:拍模式匹配做沒有貪婪的比賽球拍語言
#lang racket
(define (Modifier? t) (equal? t "Modifier"))
(define (SimpleName? t) (equal? t "SimpleName"))
(define (SimpleType? t) (equal? t "SimpleType"))
(define (FieldDeclaration? t) (equal? t "FieldDeclaration"))
(match (match '("FieldDeclaration" ("Modifier") ("Modifier") ("SimpleType") ("VariableDeclarationFragment" ("SimpleName") ("StringLiteral")))
[(list (? FieldDeclaration? id) (? Modifier? m) ... (? SimpleType? t) (list _ (? SimpleName? n)) _ ...)
'yes]
[else 'no])
其打印'no
,而我期望'yes
。我想這由...
which do a greedy matching(只是在鏈接頁面搜索「貪婪」)引起的,不過,我不太清楚這個....)
可以有0至3 ("Modifier")
S IN列表,所以我該如何匹配這個表單?(實際上,還有更多的東西在功能XXX?
這樣做,我必須使用的形式(? XXX? x)
)
PS:是否有可能extend the matching syntax這樣我就可以使用類似n_m
這意味着匹配n到m次,只像{n,m}
正則表達式?
許多許多非常感謝,格雷格!做得好!! –