【问题标题】:Newbie need Help python regex [closed]新手需要帮助 python regex [关闭]
【发布时间】:2015-09-24 14:57:11
【问题描述】:

我有这样的内容:

aid: "1168577519",      cmt_id = 1168594403;

现在我要获取所有的数列:

1168577519
1168594403

通过正则表达式。

我从来没有遇到过正则表达式的问题,但这次我应该用它来做一些解析工作。 现在我可以分别在“aid”和“cmt_id”之后得到序列。我不知道如何将它们合并为一个正则表达式。

我目前的进度:

pattern = re.compile('(?<=aid: ").*?(?=",)')
print pattern.findall(s)

pattern = re.compile('(?<=cmt_id = ).*?(?=;)')
print pattern.findall(s)

【问题讨论】:

  • 请发表你的努力。
  • 此内容是否是包含许多相似行的文件或文本的一部分?或者这就是你想要处理的所有输入?
  • @MartinEvans 是的!这只是我的文件的一个例子

标签: python regex python-2.7


【解决方案1】:

根据您可能遇到的可能输入范围,设计合适的正则表达式有许多不同的方法。

以下内容将解决您的确切问题,但在不同样式的输入下可能会失败。您需要提供更多详细信息,但这只是一个开始。

re_content = re.search("aid\: \"([0-9]*?)\",\W*cmt_id = ([0-9]*?);", input)

print re_content.groups()

这给出了以下输出:

('1168577519', '1168594403')

此示例假定您的输入中可能有其他数字,并且您尝试仅提取 aidcmt_id 值。

【讨论】:

  • 是的,它有效,非常感谢。
【解决方案2】:

最简单的解决方案是使用re.findall

示例

>>> import re
>>> string = 'aid: "1168577519",      cmt_id = 1168594403;'
>>> re.findall(r'\d+', string)
['1168577519', '1168594403']
>>>
  • \d+ 匹配一位或多位数字。

【讨论】:

    猜你喜欢
    • 2020-04-25
    • 1970-01-01
    • 2023-04-07
    • 1970-01-01
    • 2014-10-31
    • 2013-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多