AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

RegExp + am anfang eines wortes

Ein Thema von Gruber_Hans_12345 · begonnen am 3. Aug 2007 · letzter Beitrag vom 3. Aug 2007
Antwort Antwort
Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.439 Beiträge
 
Delphi 2007 Professional
 
#1

RegExp + am anfang eines wortes

  Alt 3. Aug 2007, 11:06
ich verwende nun die "Perl Regular Expressions", und bin auf etwas draufgekommen, wo ich nicht weiss, ob das ein bug oder ein feature ist

und zwar wollte ich suchen, ob ein text mit + anfängt
also hab ich folgendes probiert \b\+, nur sucht er mir das nicht ein \bT funktoniert und im text mitten drinnen funktioniert das \+ auch, nur am wortanfang nicht.
mit ^\+ funktioniert es auch nur in kombination mit \b nicht (übrigens die meisten anderen \ elemeten auch nicht wie [* ...)
Gruss Hans

2B or not 2B, that is FF
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#2

Re: RegExp + am anfang eines wortes

  Alt 3. Aug 2007, 11:19
Hi,

wie sahen denn deine konkreten RegExe aus?

Was ist wenn Du \w statt \b nimmst (ist dann halt keine Assertion mehr)? Hast Du die Option PCRE_MULTILINE aktiviert (diese beeinflusst das Verhalten von ^)?

Edit: Ansonten schau einfach mal hier: http://www.php.net/manual/de/referen...ern.syntax.php - Die Doku ist recht gut

mfG
mirage228
David F.

May the source be with you, stranger.
PHP Inspection Unit (Delphi-Unit zum Analysieren von PHP Code)
  Mit Zitat antworten Zitat
Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.439 Beiträge
 
Delphi 2007 Professional
 
#3

Re: RegExp + am anfang eines wortes

  Alt 3. Aug 2007, 11:44
mit \w findet er es auch nicht (allerdings hätte es mich auch gewundert, wenn er es mit \w finden würde, denn das würde ja ein fehler sein - oder nicht?)

ich möchte ienfach nur ein wort finden, das mit + anfängt

also so sieht mein aufruf aus

die funktionieren nicht
Delphi-Quellcode:
showmessage(TRegExpr.Pos('\b\+test', 'xxxx +test'));
showmessage(TRegExpr.Pos('\b\+test', '+test'));
da findet er was, aber (ich möchte ja gerne den anfang des wortes haben)
Delphi-Quellcode:
showmessage(TRegExpr.Pos(' \+test', 'xxxx +test'));
showmessage(TRegExpr.Pos('\+test', '+test'));

nein, verwende keinerlei zusätzlicher optionen (also alles standard)
Gruss Hans

2B or not 2B, that is FF
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#4

Re: RegExp + am anfang eines wortes

  Alt 3. Aug 2007, 12:22
Hi,

Mit dieser "Lookbehind"-Assertion sollte es gehen (siehe auch Erklärung dazu unter "Assertions" in der Doku von PHP-RegEx wie oben verlinkt):

Code:
(?<=\+)(\w+)
Der RegEx findet eine Wortkette mit mindestens einem Zeichen (\w+), welche ein "+" davor (?<=\+) hat.

Ich weiß aber nicht in wie fern TRegExpr für Delphi richtige Assertions unterstützt, ich verwende selbst die PCRE-Unit von http://www.renatomancuso.com/software/dpcre/dpcre.htm

mfG
mirage228
David F.

May the source be with you, stranger.
PHP Inspection Unit (Delphi-Unit zum Analysieren von PHP Code)
  Mit Zitat antworten Zitat
Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.439 Beiträge
 
Delphi 2007 Professional
 
#5

Re: RegExp + am anfang eines wortes

  Alt 3. Aug 2007, 12:30
also ich verwende im moment folgendes :

showmessage(TRegExpr.Pos('(^| )\+test', '+test')); damit finde ich auch alles was ich will ... und ist einfach zu verwenden verstehen als das lookbehind

nur mich hätte es interessiert, warum das \b bei einem + nicht funktioniert ...
Gruss Hans

2B or not 2B, that is FF
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#6

Re: RegExp + am anfang eines wortes

  Alt 3. Aug 2007, 12:35
Zitat von Gruber_Hans_12345:
nur mich hätte es interessiert, warum das \b bei einem + nicht funktioniert ...
Das + muss ja auch zuerst und dann die Word-Boundary-Assertion (\b)

\+\b Habs mal probiert, matched bei einem + vor einem Wort (aber auch Zahlen!), und ansonsten nicht

Edit: Beachte noch den Hinweis zu \b:
Zitat:
A word boundary is a position in the subject string where the current character and the previous character do not both match \w or \W (i.e. one matches \w and the other matches \W), or the start or end of the string if the first or last character matches \w, respectively.
mfG
mirage228
David F.

May the source be with you, stranger.
PHP Inspection Unit (Delphi-Unit zum Analysieren von PHP Code)
  Mit Zitat antworten Zitat
Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.439 Beiträge
 
Delphi 2007 Professional
 
#7

Re: RegExp + am anfang eines wortes

  Alt 3. Aug 2007, 12:49
Zitat von mirage228:
Das + muss ja auch zuerst und dann die Word-Boundary-Assertion (\b)

\+\b Habs mal probiert, matched bei einem + vor einem Wort (aber auch Zahlen!), und ansonsten nicht
das problem ist, das ist das ja nicht will
es soll ja "nur" folgendes gefunden werden "+test" " +test" aber nicht "s+test" also, mir ging es darum, das VOR dem + nur ein zeilenanfang oder ein treenzeichen sein darf

aber mit der erklärung von \b ist mir jetzt klar, warum das nicht funktioniert, daher funkt es anscheinend nur mit dem was ich opben geschrieben habe also dem (^| )
Gruss Hans

2B or not 2B, that is FF
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:18 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz