从R

时间:2015-09-15 21:53:11

标签: regex r text-mining

我有一个“.txt”文件,附带了大量的法律文字,但我只想提取日期以进行进一步的分析和图形。这是一个例子(对不起,用葡萄牙语):

  

“AR - 4024-03.2010.5.00.0000(2)”“ACORDAM os MinistrosdaEgrégia   SubseçãoIIEspecializadaemDispersídiosIcientuaisdo Tribunal   优越的Trabalho,por unanimidade,nãoconhecerdo recurso   普拉西奥,porincabível。 Brasília,24 de maio de 2011 。 Firmado por   assinatura digital(MP 2.200-2 / 2001)Alberto Luiz Bresciani de Fontan   Pereira Ministro Relator fls。过程Nº   TST-AR-4024-03.2010.5.00.0000 Firmado por assinatura digital em   26/05/2011 pelo sistema AssineJusdaJustiçadoTrabalho,conforme MP   2.200-2 / 2001,que instituiu a Infra-Estrutura deChavesPúblicasBrasileira。“

该文件有很多这样的东西,但我想只提取突出显示的部分并将它们放在一个单独的向量中。我一直在尝试比赛,grep什么都没有用。也许是因为我是R的新手。

1 个答案:

答案 0 :(得分:0)

此模式将匹配您突出显示的表单的日期:

"\\d{1,2} de (janeiro|fevereiro|março|abril|maio|junho|julho|agosto|septembro|outubro|novembro|dezembro) de \\d{4}"

有关特殊字符和量词的详细信息,请参阅?regex。您可以替换匹配的项目:

your_text <-  c("AR - 4024-03.2010.5.00.0000", "ACORDAM os Ministros da Egrégia Subseção II Especializada em Dissídios Individuais do Tribunal Superior do Trabalho, por unanimidade, não conhecer do recurso ordinário, por incabível. Brasília, 24 de maio de 2011. Firmado por assinatura digital (MP 2.200-2/2001) Alberto Luiz Bresciani de Fontan Pereira Ministro Relator fls. PROCESSO Nº TST-AR-4024-03.2010.5.00.0000 Firmado por assinatura digital em 26/05/2011 pelo sistema AssineJus da Justiça do Trabalho, conforme MP 2.200-2/2001, que instituiu a Infra-Estrutura de Chaves Públicas Brasileira.")

sub( "(.+ )(\\d{1,2} de (janeiro|fevereiro|março|abril|maio|junho|julho|agosto|septembro|outubro|novembro|dezembro) de \\d{4})(.+)", "\\2", your_text[grepl("\\d{1,2} de (janeiro|fevereiro|março|abril|maio|junho|julho|agosto|septembro|outubro|novembro|dezembro) de \\d{4}", your_text )
[1] "AR - 4024-03.2010.5.00.0000" "24 de maio de 2011" 

要删除包含非日期的项目,您可以使用grepl预选:

> sub( "(.+ )(\\d{1,2} de (janeiro|fevereiro|março|abril|maio|junho|julho|agosto|septembro|outubro|novembro|dezembro) de \\d{4})(.+)", "\\2", your_text[grepl("\\d{1,2} de (janeiro|fevereiro|março|abril|maio|junho|julho|agosto|septembro|outubro|novembro|dezembro) de \\d{4}", your_text )])
[1] "24 de maio de 2011"

如果您需要使用模式来获得使用捕获类的悬念,那么有一些漂亮的正则表达式测试网页。