J'essaye d'implémenter ceci dans un petit script de ruby, et l'ai testé sur http://www.rubular.com/, où il a fonctionné parfaitement. Je ne sais pas pourquoi il ne fonctionne pas dans le script réel.Quel est le problème avec ce RegEx?
Le RegEx: /(motion|links|sound|button|symbol)|(0.\d{8})|(\s\d{1}\s)|(\d{10} \ s)/
Le texte il est contre:
ID d'essai: 1 | Type d'essai: mouvement | Tour? 1 Temps de cliquage: 0.87913100 1302969732
ID de l'essai: 7 | Type d'essai: bouton | Tour? 0 Cliquez Heure: 0,19817800 1302987043
etc., etc.
Ce que je suis en train de saisir: Seuls les chiffres, et le seul mot après "Type d'essai". Donc pour la première ligne de l'exemple, je voudrais seulement que "1 motion 1 0.87913100 1302969732" soit retourné. Je veux également garder l'espace avant le premier nombre dans chaque essai.
Mon petit script Ruby:
File.open('log.txt', 'r') do |file|
contents = file.readlines.to_s
regex = Regexp.new(/(motion|links|sound|button|symbol)|(0\.\d{8})|(\s\d{1}\s)|(\d{10}\s)/)
matchdata = regex.match(contents).to_a
matchdata.each do |match|
if match != nil
puts match
end
end
end
Il ne sort que deux "1" cependant. Hmm ... Je sais qu'il lit le contenu du fichier correctement, et quand j'ai essayé une autre regex simplet ça a bien fonctionné.
Merci pour toute aide que je reçois ici !! :)
Oh, je n'essaie pas de sortir tout le texte - j'essaie juste d'obtenir les chiffres et le mot après "trial trial". J'aurais dû le mentionner à l'origine, désolé! –
@Jeff, c'est exactement mon point de vue ... le mot après le type d'essai et les numéros ont beaucoup plus de choses que le re doit correspondre. Vous ne pouvez pas prétendre qu'ils ne sont pas là ... "ruby" certainement pas. –
Oh, j'ai vraiment du mal à comprendre l'expression régulière - je ne sais pas exactement comment éditer l'expression pour en tenir compte, mais ne pas les inclure dans les résultats ... –