如何修复此正则表达式以捕获字符串的特定字符?

时间:2014-10-27 19:52:52

标签: python regex string parsing

我有一个very_largeString,其中包含单词列表和一些id,我想提取所有单词,id NC AQid {1}} 形态上的ocurre consecutevely 并打印very_largeString= ''' Hola hola I 1 compis compis NCMS000 0.500006 ! ! Fat 1 esta este DD0FS0 0.986779 y y CC 0.999962 es ser VSIP3S0 1 que que CS 0.437483 es ser VSIP3S0 1 muy muy RG 1 sencilla sencillo AQ0FS0 1 de de SPS00 0.999984 utilizar utilizar VMN0000 1 , , Fc 1 que que CS 0.437483 si si CS 0.99954 nos nos PP1CP000 0.935743 ponen poner VMIP3P0 1 facilidad facilidad NCFS000 1 con con SPS00 1 las el DA0FP0 0.970954 tareas tarea NCFP000 1 de de SPS00 0.999984 la el DA0FS0 0.972269 casa casa NCFS000 0.979058 pues pues CS 0.998047 mejor mejor AQ0CS0 0.873665 que que PR0CN000 0.562517 mejor mejor AQ0CS0 0.873665 , , Fc 1 pero pero CC 0.999764 tan tan RG 1 antigua antiguo AQ0FS0 0.953488 que que CS 0.437483 según según SPS00 0.995943 mi mi DP1CSS 0.999101 madre madre NCFS000 1 era ser VSII1S0 0.491262 de de SPS00 0.999984 carga carga NCFS000 0.952569 superior superior AQ0CS0 0.992424 ''' 的其余部分。例如:

id

这将是所需的输出,因为它们位于NC AQ[('carga', 'NCFS000', 'superior', 'AQ0CS0'), ('carga', 'NCFS000', 'frontal', 'AQ0CS0')] 字符的开头:

AQ

如何修复我的正则表达式,以便提取所有ID为 NC regex_ = re.findall(r'^(\w+)\s\w+\s(NCFS000)\s[0-9.]+\n^(\w+)\s\w+\s(AQ0CS0)', very_largeString, re.M) print regex_ 的单词?这就是我所有人都试过的:

id

输出只是单词,并且与 [('word','id'),('word','id')] 相关联,例如:

{{1}}

2 个答案:

答案 0 :(得分:1)

from pprint import pprint
import re
result = re.findall(r'''
    (?mx)              # Muti-line, verbose
    ^                  # Align to beginning of a line
    (\S+)\s+           # Grab first word
    \S+\s+             # Don't care about 2nd word
    (NC\S+)\s+         # 3rd word must have NC
    \S+\n              # End of first line
    ^                  # Next line is identical in form
    (\S+)\s+           # to the first line
    \S+\s+       
    (AQ\S+)\s+         # except 3rd word must have AQ
    \S+\n
''', very_largeString)
pprint (result)

答案 1 :(得分:1)

我的猜测是你试图做一些NLP(自然语言处理),并且你想从一些西班牙语语料库中提取由nounqualifier组成的对。已经有了完成此类任务的工具。

我建议你看看Python Natural Language Tool Kit(NLTK)。

另外,我不得不说这不是一个常见的任务,而是在完全自然的文本上对语料库执行这些操作。我认为你应该解释一下你的意图,也许你试图解决的解决方案并不是解决你实际问题的最佳方案。

帮助我们为您提供帮助。