我只是在学习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名称本身)..
答案 0 :(得分:3)
(\S)+
捕获\S
的最后一次重复。使用(\S+)
代替捕获所有非空格。
以上内容包括插入斜线。要排除它们,请将\S
更改为[^\s/]
。
>>> re.findall(r"/r/([^\s/]+)", string1)
['whatever3', 'whatever2']