Ich versuche, mit regex (regular expression) zu tun, zum Beispiel (wenn mit Hilfe von Javascript):Wie ignoriere ich maskierte Elemente in einer "Regel" (regulärer Ausdruck)?
var str = '[abc\[0123\]] [efg\[987\]h] [Hello \[world\]!] [foo [baz]]';
str.match(/\[(.*?)\]/g);
Ausgang:
["[abc[0123]", "[efg[987]h", "[Hello [world]!", "[foo [baz]"]
Oder
var str = '{abc\{0123\}} {efg\{987\}h} {Hello \{world\}!} {foo {baz}}';
str.match(/\{(.*?)\}/g);
Ausgabe:
["{abc{0123}", "{efg{987}", "{Hello {world}", "{foo {baz}"]
Aber ich brauche, um die ersten Elemente ignorieren nicht als [foo [baz]]
und gefangen nur [baz]
und andere entgangen, die auch entgangen sind:
["[abc[0123]]", "[efg[987]h]", "[Hello [world]!]", "[baz]"]
Und zweite Beispiel gibt:
{"{abc{0123}}", "{efg{987}h}", "{Hello {world}!}", "{baz}"]
Meine Absicht ist zunächst zu studieren, sondern auch planen, in solchen Dingen als eine Struktur zu verwenden, die CSS-Selektoren ähnelt:
Zum Beispiel:
input[name=\[0\]], input[name=foo\[baz\]\[bar\]]
Returns:
[0], [1]
und Karte von URLs planen, ich zu erstellen:
/{name}/{foo\{bar}/{baz\{foo\}}/
Returns:
{name}, {foo{bar}, {baz{foo}}
Was ich möchte ist die Zeichen in die Regel entfliehen, wie kann ich das tun? Kann ein Beispiel in jeder Sprache sein, das wichtigste ist die Regex
Ich denke, man 'var str gemeint =‚[abc \\ [\\]] [efg \\ [987 \\] h] [Hallo \\ [Welt \\]! ] [foo [baz]] '; '. Dann, wenn Sie masked ']' und '[' suchen möchten, verwenden Sie ['\ [[^ \ [\] \\] * (?: \\. [^ \ [\] \\] *) * \ ] '] (https://regex101.com/r/zO1vP4/1). Beachten Sie, dass es nicht mit '[foo [baz]]' übereinstimmt, da die inneren Klammern nicht maskiert sind. –