Laden...

Regex: Alles außer ein Zeichen begrenzt auf einzelne Zeilen

Erstellt von rollerfreak2 vor 14 Jahren Letzter Beitrag vor 14 Jahren 1.994 Views
rollerfreak2 Themenstarter:in
916 Beiträge seit 2008
vor 14 Jahren
Regex: Alles außer ein Zeichen begrenzt auf einzelne Zeilen

Hallo zusammen ich hab grad ein regex Problem.

Ich möchte in einem Text jede Zeile finden die kein "#" enthält.

Daher


sadfadsfgasdgafg#afdgydfg
adfgadfgsfdla
adfgdsfgsdfg#dgdfg
sdfsdfsdf

Der regex soll also 2 matches haben. Nämlich Zeile 2 und 4. Aber ich bekomm den nicht hin.

Ich dachte an [^#.]* aber das funktioniert nicht.

Kann mir jemand helfen?

Again what learned...

B
196 Beiträge seit 2007
vor 14 Jahren

Du willst das alles erlaubt ist außer # also was macht da ein . in deiner auswahl?
ansonsten schauts recht gut aus solltest dir mal RegexOptions anschaun vor allem das Multiline ist für dich interessant 😁

your fragile folded wings
are just tired from the pure blue sky
you dont have to force your smiles for anyone
its okay to smile...for yourself

rollerfreak2 Themenstarter:in
916 Beiträge seit 2008
vor 14 Jahren

Genau das ist ja das Problem. Ich will alle Zeichen bis auf #. Aber wie formuliert man das in Regex?
Die Regex Optionen kenne ich, Multiline und Singleline. Ich möchte aber jede einzellne Zeile habe. Sprich der Regex soll an einer Zeile beginnen, dannn bis zum Zeilenende aber kein # enthalten.

Again what learned...

B
196 Beiträge seit 2007
vor 14 Jahren

nicht #
[^#]*

und wenn du dich mit RegexOptions auskennst dürfte dir das hier ja bekannt vorkommen:

Multiline: Mehrzeilenmodus. Ändert die Bedeutung von ^ und $, sodass sie jeweils dem Anfang und Ende einer beliebigen Zeile und nicht nur dem Anfang und Ende der gesamten Zeichenfolge entsprechen.

das zusammenbauen überlass ich dir will ja nicht die Aufgabe komplett lösen 8)

your fragile folded wings
are just tired from the pure blue sky
you dont have to force your smiles for anyone
its okay to smile...for yourself

rollerfreak2 Themenstarter:in
916 Beiträge seit 2008
vor 14 Jahren

Ok das detail habe ich übersehen.


"^[^#][^#]*$[^#]"

Again what learned...

B
196 Beiträge seit 2007
vor 14 Jahren
  
"^[^#][^#]*$[^#]"  
  

Mal dein Regex übersetzt:
Am Zeilenanfang steht ein Zeichen das ungleich # ist, danach stehen beliebig viele Zeichen die auch ungleich # sind, dann ist Zeilenende und danach steht wieder ein Zeichen das ungleich # ist.
Warum so umständlich?
W+rde es nicht reichen Beliebig viele Zeichen ungleich # zu haben? oder wenn du keine leeren Zeilen haben willst das machst du halt nicht beliebig viele sondern mehr als einen anderen quantor (z.B. +)

your fragile folded wings
are just tired from the pure blue sky
you dont have to force your smiles for anyone
its okay to smile...for yourself

rollerfreak2 Themenstarter:in
916 Beiträge seit 2008
vor 14 Jahren

So wie du es machst bekommst du keine "einzelnen" Zeilen, das ist das Problem. Du kannst mir gern das Gegenteil beweisen!

Again what learned...

B
196 Beiträge seit 2007
vor 14 Jahren

So wie du es machst bekommst du keine "einzelnen" Zeilen, das ist das Problem. Du kannst mir gern das Gegenteil beweisen!

na dafür hat man ja das Multiline
-> ^:::

your fragile folded wings
are just tired from the pure blue sky
you dont have to force your smiles for anyone
its okay to smile...for yourself

rollerfreak2 Themenstarter:in
916 Beiträge seit 2008
vor 14 Jahren

Also wenn ich deinen Pattern mit RegexLab teste dann kommt folgendes raus. Und das entspricht ja nicht dem was ich will.

[Edit] So funktioniert es

[#]*?$

Der Ausdruck ist kürzer als meiner 😃

Again what learned...

49.485 Beiträge seit 2005
vor 14 Jahren

Hallo rollerfreak2,

[#\n]*$

mit RegexOptions.Multiline

rollerfreak2

rollerfreak2 Themenstarter:in
916 Beiträge seit 2008
vor 14 Jahren

Hallo herbivore,

so gehts natürlich auch. Danke euch

Again what learned...