我想提取之間的文本 「之一:」和「之二:」之間「之二:」 和「三:」 在字符串中S1「之一:BLA 1 two:bla2 three:bla3「。然而「two:bla2」不一定出現在字符串s2中。因此,如果它是s2「one:bla 1 three:bla3」它也應該工作。如何使用帶有可選模式的正則表達式提取文本?
我已經想出以下R-代碼,但我嘗試與各地「之二:......」附加括號問號不起作用:
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: (.*)")
什麼只是在拆分'\ W *(一個|二|三):\ W *'? –
如果兩個不存在,那麼你的正則表達式要求在三個之前有兩個空格,但是在s2中只有三個空間,所以請嘗試將第二個空間放置在父項中,以便這樣做? (s2,「one:(。*)(two:(。*))?three:(bla3)」)' –
@ G.Grothendieck您的建議似乎適用於s2,但不適用於S1。 – tover