2017-07-13 9 views
1

Ich versuche Grund und ich versuche, eine Regex zu verwenden, aber nichts passt. AFAIK Reason hat keine spezifischen Regex-bezogenen Dinge, deshalb gehe ich einfach aus der OCaml-Dokumentation.(ReasonML) Regex b passt nicht

Meine Zeichenfolge wie folgt aussieht:

let name = "const {foo} = bar"; 

Und die regex Ich bin mit

let re = Str.regexp_string "\\bfoo\\b" 
try { 
    Str.search_forward re name 0; 
    /* do something */ 
} { 
| Not_found => acc 
} 

Aber ich bin immer noch keine Streichhölzer. Kann jemand helfen?

Bearbeiten: Als Referenz finden Sie die Regex-Dokumentation für OCaml unter https://caml.inria.fr/pub/docs/manual-ocaml/libref/Str.html. Ich benutzte http://pleac.sourceforge.net/pleac_ocaml/patternmatching.html als ein Beispiel für OCaml Regexes Ich kann es nicht zum Funktionieren bringen.

+0

Können Sie einen _link_ auf der Seite posten, die Sie verwendet haben, um die von Ihnen unterstützte Regex-Syntax zu ermitteln? Vielen Dank ! – sln

+0

Was ist mit dem Schrägstrich nach der Wortgrenze? –

+1

Sollte es nicht "" \\ bfoo \\ b "' ohne Schrägstrich am Ende sein? –

Antwort

5

Es sieht für mich aus, als ob Sie die Dokumentation falsch gelesen haben. "Str.regexp_string s gibt einen regulären Ausdruck zurück, der exakt s und nichts anderem entspricht." Mit anderen Worten, mit Ihrer re wird Str.string_match re "\\bfoo\\b" 0 True zurückgegeben; und Ihre Definition von re entspricht Str.regexp "\\\\bfoo\\\\b". Was Sie wollten, war Str.regexp "\\bfoo\\b".