尝试使用正则表达式从脚本注释中提取日期和版本号

时间:2014-07-07 14:38:23

标签: python regex input

我试图从脚本文件中的评论中提取信息。在将文件作为输入后,我想运行一个搜索,它将以以下形式提取信息:

"版本:#。#"

"创建日期:## / ## / ####"

我的一个问题是版本号和日期不一定是那种格式。有时,它们可能看起来像:

"版本#"

"创建日期:## / ####"

评论通常充满了大量的#"' s'那么到目前为止我的正则表达式是: [\ s \ S] *(版本:?\ s \ d。?\ d |创建日期:?\ d + / \ d + / \ d {2,4}?)

我试图让它更强大以便处理不同的场景(比如我上面写的那个)和我要解决的主要问题它是只拉日期或版本,我知道这是由于管道(|),因为我不太了解正则表达式,我不知道如何抓住这两条信息

感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

你可以使用这个正则表达式,

Version:?\s*\S*|Date Created:?\s*\S*

答案 1 :(得分:1)

  1. 我认为将正则表达式分解为多个正则表达式更容易(例如,一个用于版本,另一个用于日期)
  2. 您应该使用锚点^regex$,以便找到有问题的完整行。这使得你的正则表达式通常更快,但肯定更具体。
  3. 示例:

    import re
    
    txt='''\
    # Version: #.#"
    
    # Date Created: ##/##/####"
    
    etc.
    
    One of my problems is that the version numbers and dates wont always be in that format. Sometimes, they may look like:
    
    # Version #"
    
    # Date Created: ##/####'''
    
    print 'versions found:', re.findall(r'^\s*#+\s*Version:?\s*(.*)$', txt, re.M)    
    print 'dates found:', re.findall(r'^\s*#+\s* Date Created:?\s*(.*)$', txt, re.M)
    

    打印:

    versions found: ['#.#"', '#"']
    dates found: ['##/##/####"', '##/####']