Forum: PC-Programmierung wer kennt sich gut mit regex aus?


von baer (Gast)


Lesenswert?

ich habe folgenden String

[parameter=winkel]

das wort "winkel" kann immer ein anderes sein

ich will nur winkel ausfiltern wie kann ich das machen

var string = (irgendein regex) ... bleibt WINKEL

das ganze will ich in javascript nutzen, aber regex ist ja erstmal 
übergreifend, die Implementierung bekomme ich auch hin


vielen Dank

von Peter II (Gast)


Lesenswert?

müsste so gehen

"\[.*=(.*)\]"
in $1 sollte das wort stehen.

von c.m. (Gast)


Lesenswert?

was willst du? was meinst du mit "ausfiltern"? soll die liste danach 
kein "parameter=winkel" mehr enthalten, oder kein "[parameter=winkel]"?
oder willst du eine liste mit allen "parameter=winkel" zeilen?
1
cat file | perl -ne 'print "$1\n" if /(parameter=winkel)/'
2
cat file | perl -ne 'print "$1\n" if /(\[parameter=winkel\])/'
3
4
Matcher matcher = Pattern.compile("parameter=winkel").matcher(STRING);
5
while (matcher.find()) {
6
  System.out.println(matcher.group());
7
}

whatever

von H. E. (hobby_elektroniker)


Lesenswert?

Er möchte
1
var str = '[parameter=einanderes]';
2
var re = /\[\w+\s*=\s*([^\]]+)]/i;
3
var found = str.match(re);
4
console.log(found[1])

Wobei hier noch nicht festgelegt ist, dass "parameter" gleich parameter 
heißen muss. Hier können noch andere Werte enthalten sein um gültig zu 
sein.

Ok, zugegeben, fraglich ob ein größerer Text analysiert werden soll und 
alle Vorkommen auflisten soll. Aber es wurde auch nur nach der RegEx 
gefragt.

: Bearbeitet durch User
von baer (Gast)


Lesenswert?

in meinem Fall muss Parameter festgesetzt sein... steht da was anderes 
ist es "ungültig"

Vielen Dank für die Tipps :)

ihr seid die besten

von H. E. (hobby_elektroniker)


Lesenswert?

Dann
1
var re = /\[parameter\s*=\s*([^\]]+)]/i;

Falls keine Streuzeichen vor und nach dem "Ist gleich" erlaubt sind 
(Leerzeichen, Tabs etc.) dann ohne \s*
1
var re = /\[parameter=([^\]]+)]/i;

: Bearbeitet durch User
von Markus (Gast)


Lesenswert?


von Baeri B. (baeri)


Lesenswert?

und schon wieder eine regexfrage

passend zu meiner formel brauch ich jetzt noch die variablen aus meinem 
String...

"( [length] * [width] ) - [weight]"

gesucht sind die "wörter" zwischen den eckigen klammern (in dem fall 
length, width, weight)...

vielen dank

ich habe mit den "Seiten" mir diesen String gebaut:
/\[(.*?)\]/g

leider kommen da die "Strings" inkl. klammern und excl. klammern raus... 
ich brauche aber nur OHNE

: Bearbeitet durch User
von S. R. (svenska)


Lesenswert?

Gib Beispiele. Was hast du, was willst du, was willst du nicht.
Regexe sind schlecht lesbar, deine "Grammatik" auch.

von c. m. (Gast)


Lesenswert?

Baeri B. schrieb:
> "( [length] * [width] ) - [weight]"
>
> gesucht sind die "wörter" zwischen den eckigen klammern (in dem fall
> length, width, weight)...
1
echo "( [length] * [width] ) - [weight]" | \
2
perl -ne 'print "$1 mal $2 minus $3\n" if /\[(\D+?)\].+\[(\D+?)\].+\[(\D+?)\]/'
3
length mal width minus weight
wahrscheinlich willst du aber auf \d matchen.

> leider kommen da die "Strings" inkl. klammern und excl. klammern raus...

wat?

Beitrag #4945478 wurde von einem Moderator gelöscht.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.