2017-02-01 4 views
1

Aus einem Textkörper möchte ich einen Satz extrahieren, der mit dem Wort "Meds:" mit regulären Ausdrücken beginnt. Ich Muster, das ich verwendet wurden:Sätze extrahieren mit regexpr in R

"[:blank:]Meds:[^.]*\\." 

so, dass mein Satz kurz vor dem Wort beginnen würde „Meds“ durch Worte und endet an der Zeit gefolgt. Es hat nicht so funktioniert, wie ich es mir erhofft hatte.

Hier ist, was passiert ist:

[1] Patient X came with the complain of pain Meds:ASA 81mg PO qd, 
toprol XL 25 mg PO Gen: Healthy appearing, overweight. 
  1. Mein Ausgang auf dem Wort nicht „Meds“ begann eher ein ganzer Satz, bevor er und auf den nächsten Satz fortgesetzt, bis er die nächste ‚Zeit angepasst ". So sah es so aus:

  2. Ich möchte es bei '25 mg PO 'stoppen, aber ich verstehe, dass es nicht so war, weil es dort keine "Periode" finden konnte.

    Alle Vorschläge würden sehr geschätzt werden.

+0

Ändern des Musters „[\\ s] Meds: [^.] * \\. " kümmerte sich darum, mit dem Wort "Meds" zu beginnen, obwohl ich immer noch herausfinden muss, wie ich aufhören kann, wo ich möchte, dass es aufhört (angesichts der Abwesenheit von Periode) –

+0

Was ist die Stoppbedingung? –

+0

Ich bezweifle, es gibt eine Möglichkeit, diesen Text ibto Sätze zu spalten, da es keine formalen Mittel gibt, die sie begrenzen. –

Antwort

1

Sie können dies versuchen:

text = 'Patient X came with the complain of pain Meds:ASA 81mg PO qd, toprol XL 25 mg PO Gen: Healthy appearing, overweight.' 
gsub(".*(Meds:[^.:]*)\\s+[^:]+:.*" , '\\1', text) 
# [1] "Meds:ASA 81mg PO qd, \ntoprol XL 25 mg PO" 
-1

Heres eine Möglichkeit, Sie können es tun:

\sMeds:([^.:]*)\s\w+: 

Sie es testen können here