Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[AutoHotKey] Reguliere expressies werken niet?

Pagina: 1
Acties:

  • _eXistenZ_
  • Registratie: Februari 2004
  • Laatst online: 28-11 01:05
Ik wil door middel van een simpele gui, opgezet in AHK, een video converten d.m.v. ffmpeg.

Hiervoor roep ik op een gegeven moment dit aan:

code:
1
2
runWait, %comspec% /c system\ffmpeg.exe -i "%filename%" 2> info.txt,, hide
FileReadLine, dimensions, info.txt, 9


de variabele %dimensions% is dan
Stream #0.0: Video: dvvideo, yuv420p, 720x576 [PAR 0:1 DAR 0:1], 25.00 fps(r)

Hier haal ik vervolgens een reguliere expressie overheen om de hoogte en breedte te krijgen:

code:
1
RegExMatch("%dimensions%", "([0-9]{2,4}x[0-9]{2,4})", test)


en sla deze dus op in %test%, waar dus 720x576 in zou moeten staan, maar deze variabele blijft leeg! Wat doe ik fout?

/edit

Ik zie wel dat de variabelen test en test1 bestaan, hij vind dus 1 occurance die waar is. Hij vult 'm alleen niet... Als ik een regex invul die niet gevonden kan worden, krijg ik die test1 variabele ook niet te zien.

[ Voor 14% gewijzigd door _eXistenZ_ op 27-11-2007 17:31 ]

There is no replacement for displacement!


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 20-11 11:59

NMe

Quia Ego Sic Dico.

Dat je met een andere regexp geen test1 hebt zit ergens anders in volgens mij, namelijk die buitenste haakjes om je expressie. Als je die weglaat heb je ineens nog maar één mogelijke match op je expressie in plaats van twee. Probeer eens letterlijk dit:
code:
1
RegExMatch("Stream #0.0: Video: dvvideo, yuv420p, 720x576 [PAR 0:1 DAR 0:1], 25.00 fps(r)", "i)[0-9]{2,4}x[0-9]{2,4}", test)

Als daar ook uit komt weet ik ook niet wat er gebeurt. Komt daar wel wat uit, dan zit het hem in die variabele of het gebruik ervan. :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • djiwie
  • Registratie: Februari 2002
  • Laatst online: 26-11 15:25

djiwie

Wie?

_eXistenZ_ schreef op dinsdag 27 november 2007 @ 17:14:
Hier haal ik vervolgens een reguliere expressie overheen om de hoogte en breedte te krijgen:

code:
1
RegExMatch("%dimensions%", "([0-9]{2,4}x[0-9]{2,4})", test)


en sla deze dus op in %test%, waar dus 720x576 in zou moeten staan, maar deze variabele blijft leeg! Wat doe ik fout?
Moet die regex niet
code:
1
([0-9]{2,3,4}x[0-9]{2,3,4}))

zijn? Aangezien je nu dus alleen de dimensies matcht die twee of vier numerieke tekens lang zijn.

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
djiwie schreef op dinsdag 27 november 2007 @ 19:20:
[...]

Moet die regex niet
code:
1
([0-9]{2,3,4}x[0-9]{2,3,4}))

zijn? Aangezien je nu dus alleen de dimensies matcht die twee of vier numerieke tekens lang zijn.
Nope. De regex zoals 'ie er staat is goed. Dus {2,3,4} mag (bij mijn weten) niet (ook niet volgens deze snel gegooglede pagina :P ).
@TS als je de haken ( en ) er om heen weg haalt is het geen group meer. Is dat het probleem niet, zoals -NMe- aangaf?

[ Voor 27% gewijzigd door RobIII op 27-11-2007 19:35 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 20-11 11:59

NMe

Quia Ego Sic Dico.

Je kan in regexps het aantal malen dat een expressie moet matchen opgeven. Kort samengevat:
[0-9]* -> matcht elk cijfer, zolang ze maar aan elkaar geschreven worden. Kan ook niets matchen.
[0-9]? -> matcht één of nul cijfers.
[0-9]+ -> matcht één of meer cijfers.
[0-9]{1,3} -> matcht één, twee of drie cijfers.
[0-9]{2,} -> matcht twee of meer cijfers.
[0-9]{,4} -> matcht vier cijfers of minder.

Althans, zo is het mij altijd bijgebracht. :P Die laatste twee regels zijn overigens volgens mij niet in elke PCRE-implementatie ondersteund.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • _eXistenZ_
  • Registratie: Februari 2004
  • Laatst online: 28-11 01:05
Ik ben er achter gekomen dat het niet in de regex zit maar in het feit dat een variabele binnen die functie niet werkt.

Als ik
code:
1
RegExMatch("aa5aa","[0-9]{1,}", test)
doe werkt het, maar doe ik
code:
1
2
blaat = "aa5aa"
RegExMatch("%blaat%","[0-9]{1,}", test)

komt er niks uit. (Situatieschets, weet niet wat er uit zou moeten komen, et gaat me om die variabele)

Doe ik wat verkeerd met die variabelen dan? Ik kan hier iig niet uithalen dat het fout is wat ik doe... Bugje in AHK dus?

There is no replacement for displacement!


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 20-11 11:59

NMe

Quia Ego Sic Dico.

Ik ken AHK niet, maar ik vind de constructie "%blaat%" wat vreemd ogen. Moet het niet %blaat% zijn, zonder quotes?

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • _eXistenZ_
  • Registratie: Februari 2004
  • Laatst online: 28-11 01:05
Nope dan zettie er geen quotes omheen en gaattie errorren dat er een typfout is gemaakt :)
Hij vervangt letterlijk de variabele met de tekst voor hij de functie uitvoert voor zover ik zien kan.

[ Voor 8% gewijzigd door _eXistenZ_ op 28-11-2007 16:08 ]

There is no replacement for displacement!

Pagina: 1