从其他两个中提取字符串

时间:2016-11-21 10:36:55

标签: python regex

这构成了开发知识描述语言的爱好个人项目的一部分。 这些我要提取字符串的文本:

begin car part chassis engine wheels begin motorbike part 

chassis engine wheels begin motorbike part wheels chassis 

engine begin tree part roots branches stem leaves begin light 

bulb part spile filament crystal begin coin part corp begin pen 

part ball pipe button begin glasses part mount 

eyeglasses begin motorbike part chassis engine wheels  

所以我希望使用某种类型的正则表达式来获得类似这样的输出:

[ '汽车', '摩托车', '摩托车', '树', 'ligthbulb', '硬币', '笔', '眼镜', '摩托车'] 前列表中的每个单词都是从两个重复单词“begin”和“part”的中间获得的。您没有必要根据列表具有类似于此处所示的输出格式,但我想以某种方式分离上述单词。 非常感谢你的帮助。

2 个答案:

答案 0 :(得分:0)

您可以尝试以下正则表达式:

(?<=begin[\s])(.|\n|\r)*?(?=[\s]part)

并在https://regex101.com/r/w4xDbp/2处看到它。

说明

  1. (?<=begin\s) prepenedet 开始和空格字符(\s
  2. (.|\n|\r)*?任何字符的懒惰匹配,包括行终结符
  3. (?=\spart)后跟空白字符,后跟 part
  4. 然而,它产生输出

    • 摩托车
    • 摩托车

    • bulp
    • 硬币
    • 眼镜
    • 摩托车

    请注意&#34;灯泡的换行符&#34;也匹配。

答案 1 :(得分:0)

我认为这对我来说是最容易解决问题的方法。

re.findall(r'begin (\w+)', text)
# ['car', 'motorbike', 'motorbike', 'tree', 'light', 'coin', 'pen', 'glasses', 'motorbike']