Sto riscontrando delle difficoltà nel trovare le parentesi nelle stringhe usando regex in Racket / Scheme. Pensavo che avresti dovuto sfuggire alla parentesi poiché è usato per altre espressioni in regex e ho provato:
(regexp-match #rx"(" "(")
(regexp-match #rx"(" "(")
(regexp-match #rx"[(]" "(")
Nessuno di questi sembra funzionare.
risposte:
3 per risposta № 1Sì, devi sfuggire alla parentesi, ma i regexp letterali in Racket usano semplicemente l'ordinaria analisi delle stringhe, quindi tu anche devono sfuggire alla barra retroversa.
(regexp-match #rx"\(" "(") ; => "("(")
2 per risposta № 2
Devi usare doppie fughe Qui.
(regexp-match #rx"\(" "(")
0 per risposta № 3
Nello schema ci sono no regexp-match
(Funziona solo in #!racket
). Comunque tu hai SRFI-115 che implementano le espressioni regolari per i report standard dello schema. Con questa implementazione RE la risposta è questa:
(regexp-matches? "(" "(") ; ==> #t
La ragione per cui non è necessario citarla è perché le espressioni regolari di Scheme usano la struttura delle liste per esprimere corrispondenze complesse.
(regexp-search "(w/nocase (~ ("Aab"))) "b") => #<regexp-match>