Hey mensen,
Ik zit met een probleempje. Ik wil met regex l(kleine letter L) in I(hoofdletter i) veranderen op de goede plekken
Ik ben zover gekomen dat ik alle situaties in een bestand te pakken kan krijgen, nu moet ik de kleine letter L alleen nog zien te vervangen.
Hij gaat elke match (verdeeld door middel van pipes(or)) die hij vind vervangen met hoofdletter i. Wat niet goed is, ik wil dat hij alleen match1 op de manier van replacement1 vervangt, etc.
Hopelijk word het wat duidelijker met een voorbeeldje:
----- De regex code -----
----- stukje tekst -----
----- backreferences ( spaties aangegeven met een underscore '_' ) -----
----- Replacing met backreferences -----
----- Resultaat (overbodige grote i's zijn bold) -----
Wat ik dus nu heb zijn de situaties waar de kleine L voor een grote i vervangen moet worden.
Zelf stuit ik op de volgende mogelijkheden:
Hoe ga ik dit oplossen
PS. als je denkt jeetje wat doet hij nou dom, zeg 't gewoon en laat zien hoe jij het makkelijker zou doen
Ik zit met een probleempje. Ik wil met regex l(kleine letter L) in I(hoofdletter i) veranderen op de goede plekken
Ik ben zover gekomen dat ik alle situaties in een bestand te pakken kan krijgen, nu moet ik de kleine letter L alleen nog zien te vervangen.
Hij gaat elke match (verdeeld door middel van pipes(or)) die hij vind vervangen met hoofdletter i. Wat niet goed is, ik wil dat hij alleen match1 op de manier van replacement1 vervangt, etc.
Hopelijk word het wat duidelijker met een voorbeeldje:
----- De regex code -----
(([\s])l([ftns,\'\s]))|((\. )l)|((\d\r\n)l)
----- stukje tekst -----
35 00:03:33,179 --> 00:03:35,90[u][b]9 l[/b][/u]t's my business how[u][b] l [/b][/u]spend the money that[u][b] l [/b][/u]make!
----- backreferences ( spaties aangegeven met een underscore '_' ) -----
totaal | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
9\r\nl | 9\r\nl | 9\r\n | |||||
_l_ | _l_ | _ | _ | ||||
_l_ | _l_ | _ | _ |
----- Replacing met backreferences -----
\2I\3\5I\7I
----- Resultaat (overbodige grote i's zijn bold) -----
35 00:03:33,179 --> 00:03:35,90[b]II[/b]9 It's my business how I [b]II[/b]spend the money that I [b]II[/b]make!
Wat ik dus nu heb zijn de situaties waar de kleine L voor een grote i vervangen moet worden.
Zelf stuit ik op de volgende mogelijkheden:
- Ik verteld de backreferences op één of andere manier dat ze maar één keer 'hun eigen match' vervangen met een grote i.
- Ik kan de rest van de lines ook opvangen dmv regex zonder de resultaten te beïnvloeden en plak ze daarna met backreferences aan elkaar (en uiteraard de kleine L's voor grote i's vervangen)
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| preg_match_all('/(([\s])l([ftns,\'\s]))|((\. )l)|((\d\r\n)l)/', $contents, $result, PREG_SET_ORDER); for ($matchi = 0; $matchi < count($result); $matchi++) { for ($backrefi = 0; $backrefi < count($result[$matchi]); $backrefi++) { if($result[$matchi][1] != "") { echo $result[$matchi][2]."I".$result[$matchi][3]; } elseif($result[$matchi][4] != "") { echo $result[$matchi][5]."I"; } elseif($result[$matchi][6] != "") { echo $result[$matchi][7]."I"; } } } |
Hoe ga ik dit oplossen
PS. als je denkt jeetje wat doet hij nou dom, zeg 't gewoon en laat zien hoe jij het makkelijker zou doen