Ich habe versucht, eine Frage zu beantworten (das später gelöscht wurde), dass ich Text Darstellungen wissenschaftlicher Notation zu extrahieren frage denken. (Die Implementierung von Regex von R, die doppelte Escapes für Meta-Zeichen erfordert und entweder im reinen PCRE- oder Perl-Modus verwendet werden kann, den Unterschied zwischen denen ich nicht wirklich verstehe.) Ich habe den größten Teil der Aufgabe gelöst, aber scheint immer noch Das führende Minuszeichen in einer Erfassungsgruppe kann nicht erfasst werden. Der einzige Weg, ich scheine es zu bekommen, ist, gelingt durch die führende Open-Klammer mit:Wie zeichne Minuszeichen in wissenschaftlicher Notation mit Regex?
> txt <- c("this is some random text (2.22222222e-200)", "other random (3.33333e4)", "yet a third(-1.33333e-40)", 'and a fourth w/o the "e" (2.22222222-200)')
> sub("^(.+\\()([-+]{0,1}[0-9][.][0-9]{1,16}[eE]*[-+]*[0-9]{0,3})(.+$)", "\\2" ,txt)
[1] "2.22222222e-200" "3.33333e4" "-1.33333e-40" "2.22222222-200"
> sub("^(.+\\()([-+]?[0-9][.][0-9]{1,16}[eE]*[-+]*[0-9]{0,3})(.+$)", "\\2" ,txt)
[1] "2.22222222e-200" "3.33333e4" "-1.33333e-40" "2.22222222-200"
#but that seems to be "cheating" ... my failures follow:
> sub("^(.+)([-+]?[0-9][.][0-9]{1,16}[eE]*[-+]*[0-9]{0,3})(.+$)", "\\2" ,txt)
[1] "2.22222222e-200" "3.33333e4" "1.33333e-40" "2.22222222-200"
> sub("^(.+)(-?[0-9][.][0-9]{1,16}[eE]*[-+]*[0-9]{0,3})(.+$)", "\\2" ,txt)
[1] "2.22222222e-200" "3.33333e4" "1.33333e-40" "2.22222222-200"
> sub("^(.+)(-*[0-9][.][0-9]{1,16}[eE]*[-+]*[0-9]{0,3})(.+$)", "\\2" ,txt)
[1] "2.22222222e-200" "3.33333e4" "1.33333e-40" "2.22222222-200"
I SO mit Begriffen wie `wissenschaftliche Schreibweise regex minus' soweit meiner Geduld gesucht haben
Können Sie auf Ihre Frage aktualisieren eindeutig den Starteingang und gewünschte Ausgabe zu zeigen? –
Die Frage erstellt den Eingabezeichenvektor als Eingabe mit R-Code, und ich habe zwei richtige Antworten gepostet, die auf der Methode beruhen, die ich "Cheaten" nannte. Ich weiß nicht, wie es –
@TimBiegeleisen In den letzten drei '„1.33333e-40“nicht mehr reproduzierbar sein könnte' ist anders – akrun