Python正则表达式匹配子reddit名称

标签 python regex string

我正在学习 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/

相关文章:

c# - 如何将列表的内容放入单个 MessageBox 中?

python /迷你王国 : Iterate on a NodeList

python - 在 Python 中执行多个连续的正则表达式替换。效率低下?

python - Sqlalchemy session ,删除似乎不起作用

java - 创建.htaccess

ios - 创建小写搜索字符串的正确方法 swift 3

java - String.getBytes ("UTF-32") 在 JVM 和 Dalvik VM 上返回不同的结果

python - 在 Django 中处理表单后将变量传递到 "success"页面

正则表达式:替换出现的每个匹配项,但不替换前 8 个字符

Python用正则表达式匹配实数/ float