Ik ben vrij nieuw met het RegEx gebeuren, maar ik weet wel dat er heel veel mee mogelijk is. Ondertussen heb ik al een aantal keer correct een Regex kunnen gebruiken, maar de volgende 2 situaties kom ik zelf toch niet uit.
Startsituatie:
Ik lees in C# een tekstbestand in in een List van Strings, 1 regel is 1 string. Middels een foreach loop stap ik door alle regels heen. Op elke regel voer ik een Regex.Replace commando uit, en de returnwaarde schrijf ik in een andere List van Strings (de writelist).
Probleem 1:
Alleen is er 1 uitzonderingsituatie waarbij de Regex.Replace een lege regel teruggeeft (en dus de writelist een lege string bevat). Is er een manier waarbij ik de bestaande regel kan verwijderen, zonder dat ik er een lege string aan overhoud? (Dus dat de writelist bij een .Add commando niets doet adden?) Of op een andere manier door de hele List kan loopen? In eerste instantie wilde ik de orignele readlist wijzigen, maar omdat ik in een foreach loopje zit kan ik de originele waarde niet wijzigen omdat ik daarmee ook enumereer. Is de enige oplossing hiervoor een normale for loop gebruiken? Of is er een Regex commando wat ik over het hoofd zie?
Probleem 2:
Ik wil een regel toevoegen na een bestaande regel in een bestand, alleen de originele regel moet ik wel behouden met de Replace. Middels het patroon .*Regel1.* match ik de hele regel. En na deze specifieke regel moet ik dus een nieuwe toevoegen. Is er een manier om in het replacepattern de originele waarde niet te overschrijven? Of om de originele waarde mee te nemen in de replace? Als ik namelijk .*Regel1.*\nNieuweRegel\n gebruik in mijn replacepattern, dan schrijft C# letterlijk die tekst, maar niet de originele bestaande regel. (Ik kan niet de gehele regel meegeven in het replacepattroon omdat er ook nog variabele info instaat).
Voorbeeld:
Regel1VasteTekstVariabeleTekst
Regel2VasteTekstVariabeleTekst
zou na de regex dan:
Regel1VasteTekstVariabeleTekst
ToegevoegdeRegel
Regel2VasteTekstVariabeleTekst
moeten worden, alleen dat lukt dus niet. Voorlopig heb ik een workaround gemaakt met C# die de complete originele regel incl. de variabele tekst in een string schrijft, maar ik vermoed dat dit ook met Regex zelf moet kunnen, zodat het meteen een stuk netter is.
Bedankt alvast voor degene die me kan helpen
Startsituatie:
Ik lees in C# een tekstbestand in in een List van Strings, 1 regel is 1 string. Middels een foreach loop stap ik door alle regels heen. Op elke regel voer ik een Regex.Replace commando uit, en de returnwaarde schrijf ik in een andere List van Strings (de writelist).
Probleem 1:
Alleen is er 1 uitzonderingsituatie waarbij de Regex.Replace een lege regel teruggeeft (en dus de writelist een lege string bevat). Is er een manier waarbij ik de bestaande regel kan verwijderen, zonder dat ik er een lege string aan overhoud? (Dus dat de writelist bij een .Add commando niets doet adden?) Of op een andere manier door de hele List kan loopen? In eerste instantie wilde ik de orignele readlist wijzigen, maar omdat ik in een foreach loopje zit kan ik de originele waarde niet wijzigen omdat ik daarmee ook enumereer. Is de enige oplossing hiervoor een normale for loop gebruiken? Of is er een Regex commando wat ik over het hoofd zie?
Probleem 2:
Ik wil een regel toevoegen na een bestaande regel in een bestand, alleen de originele regel moet ik wel behouden met de Replace. Middels het patroon .*Regel1.* match ik de hele regel. En na deze specifieke regel moet ik dus een nieuwe toevoegen. Is er een manier om in het replacepattern de originele waarde niet te overschrijven? Of om de originele waarde mee te nemen in de replace? Als ik namelijk .*Regel1.*\nNieuweRegel\n gebruik in mijn replacepattern, dan schrijft C# letterlijk die tekst, maar niet de originele bestaande regel. (Ik kan niet de gehele regel meegeven in het replacepattroon omdat er ook nog variabele info instaat).
Voorbeeld:
Regel1VasteTekstVariabeleTekst
Regel2VasteTekstVariabeleTekst
zou na de regex dan:
Regel1VasteTekstVariabeleTekst
ToegevoegdeRegel
Regel2VasteTekstVariabeleTekst
moeten worden, alleen dat lukt dus niet. Voorlopig heb ik een workaround gemaakt met C# die de complete originele regel incl. de variabele tekst in een string schrijft, maar ik vermoed dat dit ook met Regex zelf moet kunnen, zodat het meteen een stuk netter is.
Bedankt alvast voor degene die me kan helpen
Wanna play?