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

[Regex] Regular Expression in textpad

Pagina: 1
Acties:

  • Bad Brains
  • Registratie: November 2002
  • Nu online
Ben bezig om subtitles op te schonen en te formatten echter ik kom er bij een niet uit.

De bedoeling is dat daar waar een regel text is met daaronder nog een regel text je van de eerste regel de end of line opzoekt en de linebreak weghaalt zodat het een zin wordt.

v.b.

70
00:05:00,342 --> 00:05:02,677
I may have been out of my mind
and not know where I was...

wordt

70
00:05:00,342 --> 00:05:02,677
I may have been out of my mind and not know where I was...

find: "[a-zA-Z]$\n[a-zA-Z]" selecteert elke eerste regel text met daaronder een andere regel text.
Echter hij selecteert de laatste letter op de bovenste (eerste) regel en de eerste letter van de onderste regel (wat ook logisch is want dat geef je aan)

Met een leesteken is het eenvoudig v.b. komma aan het einde.
find: ",$\n"
replace: ", "

de quotes horen niet bij de code, is ter verduidelijking van spaties.

Iemand een idee? Ik wordt hier gek (en snap er ook niet heel veel van)

The love that lasts the longest, is the love that is never returned. If you can play, it doesn't matter what guitar you play. If you can't play, it doesn't matter what guitar you play.


  • pedorus
  • Registratie: Januari 2008
  • Niet online
Met Notepad++ zou je "([a-zA-Z])\r?\n([a-zA-Z])" kunnen vervangen in "\1 \2"; TextPad ken ik niet, dus ik weet niet welk dialect dat gebruikt.

Vitamine D tekorten in Nederland | Dodelijk coronaforum gesloten


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

NMe

Quia Ego Sic Dico.

Maar wat is het probleem dan? Je wil toch gewoon zoeken op ([a-zA-Z,.?!])\n([a-zA-Z]) en dat vervolgens vervangen door \1 \2?

Dan moet je er wel aan denken dat je om een of andere reden de ( en ) moet escapen in TextPad, waardoor je expressie wordt: \([a-zA-Z,.?!]\)\n\([a-zA-Z]\)
Je replacement is wel gewoon \1 \2.

'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.


  • Bad Brains
  • Registratie: November 2002
  • Nu online
Moest het even op posix zetten maar dit is inderdaad wat ik zoek.
Waarom het werkt snap ik niet, ook die \1 \2 variabelen denk ik uh? (wist 2 uur geleden niet eens wat regex was zou dat ermee te maken hebben)

Anyways, super bedankt.

The love that lasts the longest, is the love that is never returned. If you can play, it doesn't matter what guitar you play. If you can't play, it doesn't matter what guitar you play.


  • Bad Brains
  • Registratie: November 2002
  • Nu online
NMe schreef op maandag 04 november 2013 @ 17:30:
Maar wat is het probleem dan? Je wil toch gewoon zoeken op ([a-zA-Z,.?!])\n([a-zA-Z]) en dat vervolgens vervangen door \1 \2?
Kun je die , . en ? er zomaar bijplaatsen. Dus dat hij het doet bij een laatste letter komma punt en vraagteken.
Dan ben je natuurlijk helemaal klaar.

The love that lasts the longest, is the love that is never returned. If you can play, it doesn't matter what guitar you play. If you can't play, it doesn't matter what guitar you play.


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

NMe

Quia Ego Sic Dico.

Dat kan ja, daarom deed ik het ook. ;)

\1 en \2 verwijzen respectievelijk naar de eerste en tweede gegroepeerde tekens. Die groepen geef je aan met ronde haakjes. Wat je feitelijk zegt: zoek een letter, komma, punt, uitroepteken of vraagteken die gevolgd wordt door een regeleinde dat op zijn beurt gevolgd wordt door een letter. Vervang dat door whatever dat eerste teken was, een spatie en whatever dat laatste teken was.

Deze site heeft alle informatie die je ooit over regular expressions nodig hebt. :P

Hou trouwens wel wat ik eerder zei in gedachten: dat je de ( en ) moet escapen met een \ is puur iets dat TextPad nodig heeft. Normale regular expressions hebben dat niet nodig.

@pedorus: TextPad heeft die \r niet nodig. Ze abstraheren "regeleinde" by default naar \n voor zover ik weet, ongeacht of er nou CRLF, LFCR of LF staat. :)

'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.


  • Bad Brains
  • Registratie: November 2002
  • Nu online
Nou jullie zijn mijn helden van de dag.
Dank voor de snelle hulp.
Die HI dingen eruit slopen lukt me wel met regex.

The love that lasts the longest, is the love that is never returned. If you can play, it doesn't matter what guitar you play. If you can't play, it doesn't matter what guitar you play.


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

NMe

Quia Ego Sic Dico.

HI dingen?

'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.


  • Bad Brains
  • Registratie: November 2002
  • Nu online
Hearing impaired texten.
Zoals (glass shattering), ik zie en hoor dat wel en wil dat geenzins ook nog eens als text te krijgen.
Meeste ondertitels zitten vol met dat soort onzin.

The love that lasts the longest, is the love that is never returned. If you can play, it doesn't matter what guitar you play. If you can't play, it doesn't matter what guitar you play.


  • Gomez12
  • Registratie: Maart 2001
  • Laatst online: 17-10-2023
Alhoewel ik even geen zin heb om er een regex voor te schrijven (lui :) ) zou ik het andersom aanpakken.
Ipv te zoeken op texten waarmee je hoopt alle enters te vinden ( je mist hierbij bijv nog enters precies na een getal etc ) zou ik simpelweg zoeken op alle enters die niet voldoen aan codenr - tijdscoderingen (want dat zijn echt 100% reguliere stukken text)

De opmaak van een tijdscodering voorafgegaan door een codenr verandert nergens in het hele bestand (want dan voldoet het niet meer aan het formaat), terwijl de text zelf best wel numeriek enter numeriek kan bevatten (die je nu mist)

  • Bad Brains
  • Registratie: November 2002
  • Nu online
Gomez12 schreef op maandag 04 november 2013 @ 20:26:


De opmaak van een tijdscodering voorafgegaan door een codenr verandert nergens in het hele bestand (want dan voldoet het niet meer aan het formaat), terwijl de text zelf best wel numeriek enter numeriek kan bevatten (die je nu mist)
Dan zou dit toch kunnen ([a-zA-Z,.?!])\n([a-zA-Z0-9]) ?
Heb zo even niet getest maar het getal ligt altijd op de tweede regel, of zeg ik nu iets heel raars.

The love that lasts the longest, is the love that is never returned. If you can play, it doesn't matter what guitar you play. If you can't play, it doesn't matter what guitar you play.


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

NMe

Quia Ego Sic Dico.

Dan zeg je inderdaad iets raars, want dat gaat waarschijnlijk niet werken. :)

Dat gezegd hebbende: hoewel Gomez12 gelijk heeft dat dat meer foolproof is geloof ik niet dat TextPad lookahead en lookbehinds ondersteunt en zonder lookaround assertions is die regular expression veel lastiger dan wat je nu hebt. Als deze voldoet (altijd achteraf even checken ;)) kun je beter deze houden, denk ik.

'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.


  • Bad Brains
  • Registratie: November 2002
  • Nu online
Het werkt, ben een paar instances tegen gekomen waar de zin met een cijfer begint maar geen tijd marker is.
Merkte ook dat als er een whitespace voor zit het ook niet werkt, maar je kunt de er natuurlijk van te voren uithalen.

The love that lasts the longest, is the love that is never returned. If you can play, it doesn't matter what guitar you play. If you can't play, it doesn't matter what guitar you play.


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

NMe

Quia Ego Sic Dico.

Die waar een zin begint met een whitespace of een cijfer kun je fixen, maar een zin die eindigt op een cijfer niet. Tenminste, niet zonder het om te draaien zoals Gomez12 zegt. :)

'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.


  • Gomez12
  • Registratie: Maart 2001
  • Laatst online: 17-10-2023
Bad Brains schreef op maandag 04 november 2013 @ 21:37:
[...]


Dan zou dit toch kunnen ([a-zA-Z,.?!])\n([a-zA-Z0-9]) ?
Heb zo even niet getest maar het getal ligt altijd op de tweede regel, of zeg ik nu iets heel raars.
Die matched niet het volgende :
code:
1
2
3
4
70
00:05:00,342 --> 00:05:02,677
I may have been out of my mind 1
time and not know where I was...

Plus dat als er eens een keer een spaanse ondertiteling langs gaat komen dan kan het weer halverwege eindigen in español en die ñ staat weer niet in de regex (waarschijnlijk heel verkeerd voorbeeld maar het gaat om het principe)

Alleen ik weet dus niet of jij echt textpad / notepad++ gebruikt of iets customs om regexen in uit te voeren, binnen een editor zal het al snel te ingewikkeld worden en zullen de al gegeven regexen voldoen voor 98% van het nederlandse ondertitel werk (en die laatste 2% is snel handmatig na te lopen en te veranderen).
Binnen een zelfgemaakt tooltje zou ik het andersom aanpakken zoals ik al zei.
NMe schreef op maandag 04 november 2013 @ 21:52:
Die waar een zin begint met een whitespace of een cijfer kun je fixen, maar een zin die eindigt op een cijfer niet. Tenminste, niet zonder het om te draaien zoals Gomez12 zegt. :)
Technisch gezien kan je het wel omdraaien in de trant van : Mag wel een cijfer zijn, maar mag niet voldoen aan patroontje xxxx maar dan ga je wel richting onmogelijke en onleesbare regexen.

  • zzattack
  • Registratie: Juli 2008
  • Laatst online: 10:45
Pagina: 1