![]() |
RegExp + am anfang eines wortes
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 [* ...) |
Re: RegExp + am anfang eines wortes
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: ![]() mfG mirage228 |
Re: RegExp + am anfang eines wortes
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:
da findet er was, aber (ich möchte ja gerne den anfang des wortes haben)
showmessage(TRegExpr.Pos('\b\+test', 'xxxx +test'));
showmessage(TRegExpr.Pos('\b\+test', '+test'));
Delphi-Quellcode:
showmessage(TRegExpr.Pos(' \+test', 'xxxx +test'));
showmessage(TRegExpr.Pos('\+test', '+test')); nein, verwende keinerlei zusätzlicher optionen (also alles standard) |
Re: RegExp + am anfang eines wortes
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:
Der RegEx findet eine Wortkette mit mindestens einem Zeichen (\w+), welche ein "+" davor (?<=\+) hat.
(?<=\+)(\w+)
Ich weiß aber nicht in wie fern TRegExpr für Delphi richtige Assertions unterstützt, ich verwende selbst die PCRE-Unit von ![]() mfG mirage228 |
Re: RegExp + am anfang eines wortes
also ich verwende im moment folgendes :
Delphi-Quellcode:
damit finde ich auch alles was ich will ... und ist einfach zu verwenden verstehen als das lookbehind
showmessage(TRegExpr.Pos('(^| )\+test', '+test'));
nur mich hätte es interessiert, warum das \b bei einem + nicht funktioniert ... |
Re: RegExp + am anfang eines wortes
Zitat:
Delphi-Quellcode:
Habs mal probiert, matched bei einem + vor einem Wort (aber auch Zahlen!), und ansonsten nicht :)
\+\b
Edit: Beachte noch den Hinweis zu \b: Zitat:
mirage228 |
Re: RegExp + am anfang eines wortes
Zitat:
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 (^| ) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:55 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz