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

Python 尝试使用正则表达式从脚本注释中提取日期和版本号,python,regex,input,Python,Regex,Input,我正试图从脚本文件中的注释中提取信息。将文件作为输入后,我希望运行搜索,以以下形式提取信息: “版本:#.#” “创建日期:##/#/#/#####” 等等 我的一个问题是,版本号和日期并不总是采用这种格式。有时,它们可能看起来像: “版本#” “创建日期:##/#####” 评论中通常充满了大量的“#”,因此到目前为止我的正则表达式是: [\s\s]*(版本:?\s\d.?\d |创建日期:?\d+/\d+/\d{2,4}? 为了处理不同的场景(如我在上面写的场景),我正在尝试使它更健壮,我想

我正试图从脚本文件中的注释中提取信息。将文件作为输入后,我希望运行搜索,以以下形式提取信息:

“版本:#.#”

“创建日期:##/#/#/#####”

等等

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

“版本#”

“创建日期:##/#####”

评论中通常充满了大量的“#”,因此到目前为止我的正则表达式是: [\s\s]*(版本:?\s\d.?\d |创建日期:?\d+/\d+/\d{2,4}?

为了处理不同的场景(如我在上面写的场景),我正在尝试使它更健壮,我想解决的主要问题是:它只是拉取日期或版本,我知道这是由于管道(|),因为我对正则表达式不太了解,我不知道如何获取这两条信息。


谢谢您的帮助!

您可以使用这个正则表达式

Version:?\s*\S*|Date Created:?\s*\S*
  • 我认为将正则表达式分成多个正则表达式更容易(即,一个用于版本,另一个用于日期)
  • 你应该使用锚点
    ^regex$
    ,这样你就可以找到一个完整的问题行。这使你的正则表达式通常更快,但肯定更具体
  • 例如:

    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: ['##/##/####"', '##/####']
    

    这是因为管道
    |
    操作符的意思是
    这个或那个
    非常感谢!我想拆分正则表达式是最好的方法,再次感谢。