Groupe : Membres
|
Bonjour,
j'aimerais pouvoir mettre les resultats d'une recherche avec une regex dans un array/list .
Par exemple avoir un array [|"chan";"nick";"raison"|] grace a ce code :
Code : OCaml1
2 | let r = "nick!nick@truc KICK #chan nick :raison" in
let _ = Str.search_forward (Str.regexp "KICK #.+ .+ :.*") r 0;;
|
L'équivalent de l'argument matches de preg_match en PHP .
Merci .
|
($ ) + 10.
 Groupe : Membres
|
Hum, je sais pas bien ce que tu veux faire mais je pense que tu peux te débrouiller à partir de Str.string_match
et Str.matched_group nombre string
.
Pense à associer ça avec des parenthèses capcturantes, bien entendu ...
Cette solution n'est pas forcément la plus adapté mais c'est la seule que mes maigres connaissances peuvent trouver, et je pense qu'elle peut te convenir.
|
Groupe : Membres
|
Merci  .
Seulement j'ai un probleme avec les parenthèses :
Code : OCaml 1
2
3
4
5
6
7
8
9
10 | # let r = "oo!ff@free KICK #re lool :kikoo";;
# Str.string_match (Str.regexp "(.*)ff") r 0;;
- : bool = false
# Str.string_match (Str.regexp ".*ff") r 0;;
- : bool = true
# Str.string_match (Str.regexp "\(.*\)ff") r 0;;
Warning X: illegal backslash escape in string.
Warning X: illegal backslash escape in string.
- : bool = true
|
Je me gourre ou bien les warnings sont totalement normaux ?
Pourtant :
Citation : Manuel OCAMLmatched_group n s returns the substring of s that was matched by the nth group \(...\)
merci .
Édité
le 08/07/2008 à 10:09:34
par kop6
|
The shrieker shrieks.
 Groupe : Membres
|
Les "illegal backslash escapes..." sont "normaux", OCaml fait toujours ça. N'en tiens pas compte (il y a d'ailleurs moyen de les désactiver, ocaml --help).
Édité
le 08/07/2008 à 10:52:33
par zulon
|
Groupe : Membres
|
Ok, merci .
|
dont ask to ask
 Groupe : Membres
|
Zulon > ou pas.
Code : OCaml
|
The shrieker shrieks.
 Groupe : Membres
|
Oh, j'ai toujours utilisé les regexps comme ça moi, et ça a toujours marché  . Désolé d'avoir véhiculé de fausses idées. Il semblerait qu'OCaml transforme les échappements illégaux en "\\(", par exemple.
Édité
le 08/07/2008 à 12:22:07
par zulon
|
Groupe : Membres
|
Doncil faut que j'utilise \\ ? C'est que sa devient vite illisible une regex avec tout ça  .
|
($ ) + 10.
 Groupe : Membres
|
Bah hum, par nature une regexp c'pas le truc le plus lisible du monde
|
The shrieker shrieks.
 Groupe : Membres
|
Ça dépend, on peut faire des regexps très lisibles en Perl avec le modifieur /x (et encore plus en Perl 6 %).
|