Ik heb 2 reguliere expressies.
die eigenlijk bijna hetzelfde doen en perfect te combineren zijn, maar ik ben er geen held in en krijg het daardoor ook niet voor elkaar:
Eerste : /(\d{1,2}):(\d{1,2}) ([A-z0-9:]*) [\d ]*: (.*) hit (.*) at location (.*) for \d/is
Tweede : /(\d{1,2}):(\d{1,2}) ([A-z0-9:]*) [\d ]*: (.*) killed (.*) by (.*)/is
Eerste :/(\d{1,2}):(\d{1,2})([A-z0-9:]*)[\d ]*:(.*) hit (.*) at location (.*)for \d/is
Tweede :/(\d{1,2}):(\d{1,2})([A-z0-9:]*)[\d ]*:(.*) killed (.*) by (.*)/is
dit haat ik dus aan regex é, bedankt BramBo da werkt perfect, maar kan je dit ook doen met mijn versie. ik begrijp er namelijk niks meer van en vond mijn versie veel overzichtelijker. waarom verrander je die .* door \w ?
Zo zijn de groups stricter afgezet. \w+ komt op 't zelfde neer in jou geval als .* hoewel * 0 of meer is en + altijd iets is er verder weinig verschil.
En wanneer je | gaat gebruiken met specifieke woorden vind ik het overdreven lang worden aangezien je dan een soort cases ga definiëren, terwijl \w altijd oke is.
oké ik begin uw versie al beter te begrijpen en heb dan ook uw eerste versie gebruikt. om een of andere reden wordt die eerste hit: of Kill: niet uitgelezen terwijl er toch in de regex staat: (?>[\w:]+).
Ook zou ik graag achteraan niet volledig die "location 2048 for 15" hebben maar enkel het eerste cijfer die 2048 dus.
dit is dus of een woord dat het einde van de regel betekent of een getal, met voorgaande een eventueel woord en gevolgd door 0 tot meer andere tekens er achter...
edit:
@ edit Ontani: .+ kan beter worden [^\s], dus geen spatie aangezien spaties het in zo'n gevoelig regexp het nogal kunnen vernaaien voor je. je kant [^\s] ook natuurlijk nog uitbreiden met de characters die niet voor mogen komen in de naam