Python正则表达式匹配subreddit名称

时间:2014-01-14 09:29:44

标签: python regex string

我只是在学习python,试图用正则表达式从文件中提取subreddit,但没有太多运气..

import re

string1 = "asdf asdf 587985 (*&(*& /r/whatever3/fjfjfjjrr /r/whatever2 jfdnhkjv43$#$"
matches = re.search(r"/r/+(\S)+[/ ]", string1)
if matches:
    print matches.groups()

看起来似乎没有正常工作,虽然语法对我来说是正确的(它应匹配没有空格的字符串(\ S)后跟空格或正斜杠[/]

此版本可能匹配'whatever3' - 它返回3,它至少是最后一个字符:

import re

string1 = "asdf asdf 587985 (*&(*& /r/whatever3/fjfjfjjrr /r/whatever2 jfdnhkjv43$#$"
matches = re.search(r"/r/+(\S)+/", string1)
if matches:
    print matches.groups()

我也很难从文档中找出如何从匹配中提取变量(如subreddit名称本身)..

1 个答案:

答案 0 :(得分:3)

(\S)+捕获\S的最后一次重复。使用(\S+)代替捕获所有非空格。

以上内容包括插入斜线。要排除它们,请将\S更改为[^\s/]

>>> re.findall(r"/r/([^\s/]+)", string1)
['whatever3', 'whatever2']