【问题标题】:Regex to find multiple matches正则表达式查找多个匹配项
【发布时间】:2015-01-05 16:16:11
【问题描述】:

我尝试了一些先行查找字符串中的模式的可能性,但我被困在这里,因为我必须检查多个条件。

我有一个类似

的字符串
string = ''' i was behind the bars for (5.75) years '''
string2 = ''' I travelled for 6 months in Switzerland and some years say 5.2 in England '''
re.search(r'(?=\byears\b)([/d]+\S+)',str,re.I)

这是我多年后尝试获取的日期; /S+ 用于获取5.335.44 等,因为数字组合后面会有一个空格。

我想要一个正则表达式来匹配任何数字组合,如5.7510.25 等,即使它被括在括号或引号中。但我只需要数字。它可以在“年”一词之前或之后。在 Python 中使用正则表达式检查多种可能性的最佳方法是什么?

【问题讨论】:

  • 您尝试了哪些可能性,如何不足?
  • 等一下,我会把它作为评论发布。
  • 发布它在您的问题中以及预期的输入和输出
  • 一个简单的整数解析正则表达式是(?:\d+(?:\.\d*)?|\.\d+)“年”与它有什么关系?
  • 6 months in Switzerland and some years say 5.2 有两个围绕“年”的数字。你能澄清一下你在做什么吗?

标签: python regex


【解决方案1】:

这可能有效。

更新

您收到“无效表达式”错误。
除非 python 不支持集群组中的修饰符,否则我看不到任何无效的内容。
您可能会尝试将大小写修饰符取出并将其添加到正则表达式函数的选项部分。

然后试试这个:

(?:\b(\d+(?:\.\d*)?|\.\d+)\b.*?(?:(?:\r?\n).*?){0,2}\byears?\b|\byears?\b.*?(?:(?:\r?\n).*?){0,2}\b(\d+(?:\.\d*)?|\.\d+)\b)  

原文:

 #  (?i:\b(\d+(?:\.\d*)?|\.\d+)\b.*?(?:(?:\r?\n).*?){0,2}\byears?\b|\byears?\b.*?(?:(?:\r?\n).*?){0,2}\b(\d+(?:\.\d*)?|\.\d+)\b)

 (?i:
      \b 
      (                             # (1 start), Digits
           \d+ 
           (?: \. \d* )?
        |  \. \d+ 
      )                             # (1 end)
      \b 
      .*? 
      (?:                           # 0, 1 or 2 lines
           (?: \r? \n )
           .*? 
      ){0,2}
      \b years? \b                  # Followed by "year(s)"

   |                              # or --

      \b years? \b                  # "year(s)"
      .*?   
      (?:                           # 0, 1 or 2 lines
           (?: \r? \n )
           .*? 
      ){0,2}
      \b 
      (                             # (2 start), Followed by Digits
           \d+ 
           (?: \. \d* )?
        |  \. \d+ 
      )                             # (2 end)
      \b 
 )

【讨论】:

  • @sin - 谢谢。它不工作。但我正在做一些修改,如果它工作正常,我会在这里发布答案。
  • @sin - 我已经用我遇到的错误编辑了你的答案。
  • Invalid expression 但没有说在哪里。我已经对其进行了更新,去掉了不区分大小写的修饰符,看看是否有效。
  • @sin - 完美运行。你们是怎么做到的。对我来说太复杂了。哇。像魅力一样工作。
  • @sin - 感谢您的帮助。
猜你喜欢
  • 2015-06-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-01
  • 1970-01-01
  • 2014-10-08
  • 2013-06-19
  • 1970-01-01
相关资源
最近更新 更多