PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : teile einer regex in eine varibale bringen


gock
15.03.2006, 12:09
eine datei sieht wie folgt aus:

LIJFBLKDAJF accessed KFJHLKDJHFLKJH.
LIJFBLKDAJF accessed KFJHLKDJHFLKJH.
BLABLABLA.
LIJFBLKDAJF accessed KFJHLKDJHFLKJH.
LIJFBLKDAJF accessed KFJHLKDJHFLKJH.

um die accessed einträge zu bekommen und welche wie BLABLA NICHT benutze ich folgende regex:

^.* accessed .*\.\n

den teil vor und nach accessed möchte ich in eine variable reintun.

aber in LIJFBLKDAJF kann alles mögliche stehen kann auch " accessed "

Beispiele:

LIJF accessed BLKDAJF accessed KFJHLKDJHFLKJH
LIJF accessed BLKDAJF accessed KFJHLK accessed DJHFLKJH
LIJF accessed BLKDAJF accessed KFJHLK accessed DJHFLKJH

wie schaffe ich es nun das was jeweils dem punktstern in der regex entspricht in eine eigene variable zu bekommen?


z3r0x
15.03.2006, 14:12
^(.*) accessed (.*)\.\n

gock
16.03.2006, 07:23
^(.*) accessed (.*)\.\n


und wie bring ichs in die variablen?

trekkie
16.03.2006, 11:34
und wie bring ichs in die variablen?

Na du hast'se doch bereits drinnen, linkes (.*) == $1, rechtes (.*) == $2

BTW, das .* ist recht greedy, bei mehreren accessed klappt das schlecht.
Alternativer Ansatz der aber auch nicht klappt ...
(.*?)(?:accessed\s)
cu Nancy

eViL_oNe
16.03.2006, 12:27
und wie bring ichs in die variablen?

das hängt von der Regex-API / Programmiersprache ab

die meisten definieren so etwas wie match-groups, in Gruppe 1 und 2 stehen dann die gewünschten Resultate. Bei Perl wären dies etwa $1 und $2

if ( $input =~ /^(.*?) accessed (.*)$/ )
{
$firstGroup = $1;
$secondGroup = $2;
}