/ / regexp matching bracket "(" in stringa - regex, escape, schema, racket

regexp matching bracket "(" in stringa - regex, escape, schema, racket

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 № 1

Sì, 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>