我正在尝试从文本文档中提取大写的标题。我想避免一个长的虚线序列和一些缩写,如NOM-059-SEMARNAT 2010
出现在标题周围;可能还有一些其他字符要排除。
为了实现这个目标,我使用了python模块findall
中的re
函数(在python 2.7.7下,spyder
,windows 8.1中)。这是我使用的正则表达式:
(?!(?:[- ]{2,}|NOM\-059\-SEMARNAT))([A-Z0-9ÁÉÍÓÚÑ:;¿\?\(\)\-\+\. ,]{10,})
我得到了许多好的比赛,但也有一些像这样(其中“N”被跳过):
OM-059-SEMARNAT-2010(SEMARNAT,2010)。 P
如何避免这些糟糕的比赛?
我使用此模式扫描的文档示例如下:
--------------------------------------------- Congreso Mexicano
RELACIÓNENTTREELTAMAÑODELFOROFITO Y LA RIQUEZADEEPÍFITASENLOS PANTANOS DE CENTLA,TABASCO DwersAasrdJxcxéasLóasd1*,Rasdéde JawdúzRasdwVasde1 Instituto de Ciencias Biologicas,Universidad de Ciencias y Artes de Chiapas awdsd.w@hlksajk.com Las plantas epífitasponpoco comunes en manglares,没有epífitasylas característicasdelos forofitos de Rhizophora mangle,especie amenazada de acuerdo a la NOM-059-SEMARNAT-2010(SEMARNAT,2010); enáreas de la reserva Pantanos de Centla,al noroeste de Tabasco。 Se评估 relaciónentreLa riquezadeepífitasestuvosignificativamente Relacionada con la coberturadeííydDAP de los forofitos。拉斯佐纳斯 I y III de los forofitos fueronlasmássimilaresy compartieron 47% del total de las especies。 La zona I,que son las Palabras clave: Epífitasvasculares,distribuciónvertical,composición,Rhizophora mangle,raícesaéreas。 ID:96 lunes,20 de abril de 2015,3:30:00 PM, Sala:8Ejetemático:EcologíadeComunidades
答案 0 :(得分:0)
我认为你有足够的限制可以使这项工作 你必须滚动自己的边界并设置伪锚。
压缩:
# (?<![A-Z0-9ÁÉÍÓÚÑ:;¿?()\-+.,])((?!(?:NOM-059-SEMARNAT))[A-ZÁÉÍÓÚÑ¿](?:(?!(?:[- ]{2,}|NOM\-059\-SEMARNAT))[A-Z0-9ÁÉÍÓÚÑ:;¿?()\-+. ,]){9,}(?<=[A-ZÁÉÍÓÚÑ?]))(?![a-z])
格式化:
(?<! [A-Z0-9ÁÉÍÓÚÑ:;¿?()\-+.,] ) # ASSERT - Dont start in the middle of anything
( # (1 start)
(?! # ASSERT - The start cannot be this phrases (add more)
(?: NOM-059-SEMARNAT )
)
[A-ZÁÉÍÓÚÑ¿] # Starts with a letter
(?:
(?! # ASSERT - The body cannot contain this phrase (add more)
(?: [- ]{2,} | NOM\-059\-SEMARNAT )
)
[A-Z0-9ÁÉÍÓÚÑ:;¿?()\-+. ,]
){9,}
(?<= [A-ZÁÉÍÓÚÑ?] ) # ASSERT - Ended with a letter
) # (1 end)
(?! [a-z] ) # ASSERT - Not a forward lower case when previous upper case that probably starts a sentence
或者,同样但是使用hex来扩展ascii
# (?<![A-Z0-9\x{C1}\x{C9}\x{CD}\x{D3}\x{DA}\x{D1}:;\x{BF}?()\-+.,])((?!(?:NOM-059-SEMARNAT))[A-Z\x{C1}\x{C9}\x{CD}\x{D3}\x{DA}\x{D1}\x{BF}](?:(?!(?:[- ]{2,}|NOM\-059\-SEMARNAT))[A-Z0-9\x{C1}\x{C9}\x{CD}\x{D3}\x{DA}\x{D1}:;\x{BF}?()\-+. ,]){9,}(?<=[A-Z\x{C1}\x{C9}\x{CD}\x{D3}\x{DA}\x{D1}?]))(?![a-z])
(?<!
[A-Z0-9\x{C1}\x{C9}\x{CD}\x{D3}\x{DA}\x{D1}:;\x{BF}?()\-+.,]
)
( # (1 start)
(?!
(?: NOM-059-SEMARNAT )
)
[A-Z\x{C1}\x{C9}\x{CD}\x{D3}\x{DA}\x{D1}\x{BF}]
(?:
(?!
(?: [- ]{2,} | NOM\-059\-SEMARNAT )
)
[A-Z0-9\x{C1}\x{C9}\x{CD}\x{D3}\x{DA}\x{D1}:;\x{BF}?()\-+. ,]
){9,}
(?<=
[A-Z\x{C1}\x{C9}\x{CD}\x{D3}\x{DA}\x{D1}?]
)
) # (1 end)
(?! [a-z] )