我如何从第一个方括号和最后一个圆括号分割R中的字符串?



我正在处理法律引用。我想把引文分成四个部分。引文的一般格式如下:ABC诉DEF[年份]引用数据(权威)所以,我想把它分成四个部分——ABC诉DEF、年份、引文数据和权威。问题是,第一部分(即ABC v. DEF)可能有额外的圆括号,而第三部分(即引文数据)可能有额外的方括号和/或圆括号。例如,在下面的例子中

"Lubrizol Corporation, USA v. Asstt. DIT (International Taxation) [2013] 33 taxmann.com 424/60 SOT 118 (URO) (Mum. Trib.)"

第一部分是"Lubrizol Corporation, USA v. Asstt. DIT (International Taxation)",第二部分是"2013",第三部分是"33 taxmann.com 424/60 SOT 118 (URO)",最后一部分是"Mum. Trib."我无法想出正确的正则表达式来做到这一点。有人能帮我解决这个问题吗?

使用extract:

library(tidyr)
data.frame(txt) %>%
extract(txt,
into = c("First", "Sec", "Thrd", "Frth"),
regex = "(.+)\[(\d+)\](.*)\((.*)\)")
First  Sec                                  Thrd       Frth
1 Lubrizol Corporation, USA v. Asstt. DIT (International Taxation)  2013  33 taxmann.com 424/60 SOT 118 (URO)  Mum. Trib.

regex部分看起来比实际更可怕:您只需完整地描述字符串,将希望提取的部分包装到括号中(捕获组的语法)

数据:

txt <- "Lubrizol Corporation, USA v. Asstt. DIT (International Taxation) [2013] 33 taxmann.com 424/60 SOT 118 (URO) (Mum. Trib.)"

text <- "Lubrizol Corporation, USA v. Asstt. DIT (International Taxation) [2013] 33 taxmann.com 424/60 SOT 118 (URO) (Mum. Trib.)"
pattern <- "(.*?)\s*\[(\d{4})\]\s*(.*?)\s*\((.*)\)"
regmatches(text, regexec(pattern, text))
[[1]]
[1] "Lubrizol Corporation, USA v. Asstt. DIT (International Taxation) [2013] 33 taxmann.com 424/60 SOT 118 (URO) (Mum. Trib.)"
[2] "Lubrizol Corporation, USA v. Asstt. DIT (International Taxation)"                                                        
[3] "2013"                                                                                                                    
[4] "33 taxmann.com 424/60 SOT 118 (URO)"                                                                                     
[5] "Mum. Trib."

如果你想要一个数据框架:

dat <- data.frame(citation = character(), year = numeric(), data = character(), Authority = character())
strcapture(pattern, text, dat)
citation year                                data  Authority
1 Lubrizol Corporation, USA v. Asstt. DIT (International Taxation) 2013 33 taxmann.com 424/60 SOT 118 (URO) Mum. Trib.

最新更新