2017-09-12 6 views
-2

Gibt es eine Möglichkeit, den ersten Satz aus einem Absatz zu extrahieren. Kann Regex hier verwendet werden. wenn ja Wie?Extrahieren ersten Satz aus einem Absatz

sagen zum Beispiel unter dem Absatz hat zwei Sätze, und ich brauche ersten Satz:

„Die japanischen Darlehen werden am 25. Oktober um 0,1% Zinssatz zur Verfügung und Indien wird dies in 50 zur Rückzahlung der Lage sein, Die Rückzahlung beginnt 15 Jahre nach Eingang des Darlehens. "

Meine gewünschte Leistung: Der japanische Kredit wird am 25. Oktober zu 0,1% Zinsen verfügbar sein und Indien wird in der Lage sein, dies in 50 Jahren zurückzuzahlen.

Wie kann ich das tun? Gibt es einen VBA-Code mit Regex, der hier verwendet werden kann?

Grüße Karan

+0

Wie würde eine Regex bestimmen, wo der Satz endete? Sie können den Punkt nicht verwenden, da es einen in * 0.1% * und * Okt. * gibt. Sie können eindeutig kein Leerzeichen verwenden und können keine Groß-/Kleinschreibung verwenden (wegen * Japanisch *, * Okt. * und * Indien *). Wie würde ein regulärer Ausdruck mit diesen Fragen umgehen? Sie können keinen regulären Ausdruck verwenden, um Dinge zu identifizieren, für die Sie keine Regeln definieren können. Wie ** spezifisch ** definieren Sie das Ende des Satzes in dem von Ihnen bereitgestellten Absatz? –

+0

Gibt es nach dem Punkt am Ende des Satzes zwei Leerzeichen? (funktioniert nur in der Schreibweise der alten Schule) –

+0

@ForwardEd: Zwei Leerzeichen nach einer Periode, die vor mindestens vier Jahrzehnten endete. Offensichtlich nicht angebracht, es sei denn, Sie haben es mit altem, historischem Text zu tun. –

Antwort

2

Reguläre Ausdrücke auf jeden Fall verwendet werden kann. Im Folgenden wird eine einfache, aber typische Definition von "Satzende" verwendet: a ., ! oder ? gefolgt von 1) mindestens einem Leerzeichen, dann einem Großbuchstaben oder 2) dem Ende des Textes.

Public Function TheFirstSentence(ByRef Text As String) As String 

    With New VBScript_RegExp_55.RegExp 
    .Pattern = ".*?[.!?](?= +[A-Z]|$)" 
    If .test(Text) Then 
     TheFirstSentence = .Execute(Text)(0).Value 
    Else 
     TheFirstSentence = vbNullString 
    End If 
    End With 

End Function 

Denken Sie daran, den Verweis auf Microsoft VBScript Regular Expressions 5.5 zu ermöglichen.

Verwandte Themen