我正在学习 python 并尝试使用正则表达式从文件中提取 subreddits,但运气不太好..
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 名称本身)从匹配中取出。
最佳答案
(\S)+
捕获 \S
的最后一个重复。使用 (\S+)
来捕获所有非空格。
以上内容包括中间的斜杠。要排除它们,请将 \S
更改为 [^\s/]
。
>>> re.findall(r"/r/([^\s/]+)", string1)
['whatever3', 'whatever2']
关于Python正则表达式匹配子reddit名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21109968/