StringSplit mit RegExp

03/27/2013 13:31 Croco™#1
Hi,
ich versuche gerade einen Text in seine Sätze zu zerteilen. Ist es möglich das man mit StringSplit oder StringRegExp Texte splittet und als trennzeichen "!","?" und "." nimmt ? Weiterhin will ich das nach einer dieser zeichen ein Großbuchstabe folgen muss. Würde das gehen bzw. wie ?
03/27/2013 15:01 lolkop#2
Quote:
Originally Posted by Croco™ View Post
Hi,
ich versuche gerade einen Text in seine Sätze zu zerteilen. Ist es möglich das man mit StringSplit oder StringRegExp Texte splittet und als trennzeichen "!","?" und "." nimmt ? Weiterhin will ich das nach einer dieser zeichen ein Großbuchstabe folgen muss. Würde das gehen bzw. wie ?
Code:
$string = "dies.Ist?Ein!beispiel.Satz"
$regEx = StringRegExp($string, "([A-Z].+?)[.!?]", 3)
For $i=0 To UBound($regEx)-1
	ConsoleWrite($regEx[$i]&@CRLF)
Next
gibt entsprechend alle sätze zurück, welche mit einem großbuchstaben beginnen und einem der genannten satzzeichen enden
03/27/2013 15:10 Croco™#3
Man dankt recht herzlich ;)
03/27/2013 15:19 MrSm!th#4
Quote:
StringRegExp($string, "([A-Z].+?)[.!?]", 3)
Stehe ich gerade auf der Leitung oder müsste man dem Punkt in den eckigen Klammern nicht seine Meta-Funktion nehmen?
Code:
([A-Z].+?)[\.!?]
03/27/2013 15:33 lolkop#5
Quote:
Originally Posted by MrSm!th View Post
Stehe ich gerade auf der Leitung oder müsste man dem Punkt in den eckigen Klammern nicht seine Meta-Funktion nehmen?
Code:
([A-Z].+?)[\.!?]
auszug aus der regex hilfe:
Quote:
Note that special characters do not retain their special meanings inside a set, with the exception of \\, \^, \-,\[ and \] match the escaped character inside a set
btw wenn das so nicht gelten würde, müsste man das '?' auch mit einem break versehen.
03/27/2013 15:35 Croco™#6
Habt ihr eine Idee wie man feststellen könnte, dass der Punk z.B bei "3. Dezember" nicht als Satzende zählt ?
03/27/2013 15:43 lolkop#7
Quote:
Originally Posted by Croco™ View Post
Habt ihr eine Idee wie man feststellen könnte, dass der Punk z.B bei "3. Dezember" nicht als Satzende zählt ?
dabei handelt es sich schon um eine sehr komplexe form des text-parsings...

du könntest prüfen, ob vor dem punkt eine zahl steht... dann würden aber sätze wie "Pi entspricht gerundet etwa 3,14." falsch geparst werden...

wenn du derartige dinge parsen willst, musst du schon eine recht hohe logik entwerfen. und diesen spass will ich dir hier nicht abnehmen :P
03/27/2013 15:47 Croco™#8
Das ist nett von dir ;)
An sich ist es nur eine optimierung, da mein Code bis jetzt wunderbar auch ohne dem funktioniert. Aber man will es ja perfekt machen ne !? ;)