Ich mag den Text zwischen extrahieren "one" und "two" und zwischen "two" und "drei" in der Zeichenfolge s1„one: bla 1 zwei: bla2 drei: bla3 ". Jedoch "zwei: bla2" ist nicht unbedingt in der Zeichenfolge s2. Also wenn es s2ist "eins: bla 1 drei: bla3" sollte es auch funktionieren.Wie extrahiert man Text mit regulären Ausdrücken mit optionalen Mustern?
Ich habe mit dem folgenden R-Kodex kommen, aber mein Versuch, mit den zusätzlichen Klammern um die „zwei: ...“ und das Fragezeichen nicht funktioniert:
library(gsubfn)
s1 <- "one: bla 1 two: bla2 three: bla3"
s2 <- "one: bla 1 three: bla3"
strapplyc(s1, "one: (.*) (two: (.*))? three: (.*)")
strapplyc(s2, "one: (.*) (two: (.*))? three: (.*)")
Was gerade Aufspaltung auf '\ w * (ein | zwei | drei): \ w *'? –
Wenn zwei nicht vorhanden sind, dann benötigt Ihr regulärer Ausdruck, dass es zwei Leerzeichen vor drei gibt, aber es gibt nur ein Leerzeichen vor dreien in s2. Versuchen Sie also, das zweite Leerzeichen innerhalb des Parens zu setzen. wirkt auch darauf: 'strapplyc (s2," eins: (. *) (zwei: (. *))? drei: (bla3) ")' –
@ G.Grothiedieck scheint dein Vorschlag für s2 zu funktionieren, aber nicht für s1. – tover