2009-09-15 9 views
0

Je travaille dans lua, et j'ai besoin de faire correspondre 2 parties d'une ligne qui est prise dans le fichier IO. Je suis inexpérimenté avec les regex et on me dit que lua n'a pas de support regex complet intégré (mais j'ai une bibliothèque qui fournit cela si nécessaire). Quelqu'un peut-il m'aider à construire des expressions rationnelles pour correspondre aux pièces nécessaires?Regex pour correspondre à 2 parties différentes d'une ligne

"bor_adaptor_00.odf" 3.778 
     ^^^^^^^^^^^^^^  ^^^^^ 
     i need this in  and this in 
     a string   a number 
+0

ressemble vous partagez basé sur deux ou plusieurs espaces, non? Je ne veux pas polluer les réponses parce que je ne connais pas Lua, mais cela semble être une approche que vous pouvez adopter. –

+0

vous pouvez vérifier la bibliothèque de chaînes dans la documentation Lua dans le dossier d'installation, à savoir le fichier: ///.../Lua/5.1/docs/luarefv51.html#The_string_library –

Répondre

2
^"(.*?)"\s+(\d[\d.]*)$ 

Explication:

  • ^= ligne de départ
  • "(*.?)" = Sauver tout entre "et" à un groupe de capture
  • \ s + = any nombre> = 1 de caractères blancs
  • (\ d [\ d.] *) = un chiffre suivi de plusieurs chiffres ou points
  • $ = fin de ligne

Aucune idée de comment l'utiliser dans LUA, mais devrait vous aider à démarrer. D'autre part, il s'agit d'une chaîne très simple, ce qui peut être une bonne idée de l'analyser sans expressions régulières.

+0

Vous avez raison, je pense que je peux utiliser les outils de Lua simplement l'analyser en un nombre et un mot, et partir de là – RCIX

3

J'ai fait un exemple:

s = '"bor_adaptor_00.odf" 3.778' 
val1, val2 = string.match(s,'(%b"")%s*([.0-9]*)') 
print(val1, val2) 

sortie:

"bor_adaptor_00.odf" 3.778 
Questions connexes