python - 正则表达式结束对特定字符的搜索

标签 python regex search

所以我有一个字符串,我正在尝试使用 re.search 来搜索它。该字符串由 Id 和其后的字符串组合而成。所以它看起来像这样:<@randomId> string after

我正在使用正则表达式模式"^@(|[WU].+?)>(.*)"在我的re.search尝试获得两个不同组的方法。第一组是 id,减去 < > 。所以它就是"@randomId" 。第二组是 "string after" Id 之后的文本。因此,如果我传递的文本为 re.search"<@QWE1234> do this"我要匹配并返回"@QWE1234""do this" .

使用我正在使用的正则表达式,我得到的返回类型为 None,当我添加 < 时到正则表达式模式,所以它看起来像这样: "^<@(|[WU].+?)>(.*)"我得到了整个字符串。

最佳答案

要匹配 2 个捕获组,您可以删除这部分 |[WU]从您的正则表达式中添加 \s+考虑以下空白字符,这样您就不必修剪该匹配。

您的正则表达式可能类似于 ^<(@.+?)>\s+(.*)

或者不使用.+? ,您可以使用[^>]+

<(@[^>]+)>\s+(.*)

这会匹配

  • 匹配<
  • (@[^>]+)在组 1 和 @ 中捕获,那么就不是>使用否定字符类
  • 匹配 >
  • \s+匹配一个或多个空白字符
  • (.*)捕获第 2 组中的零个或多个字符(如果后面必须有至少 1 个字符,则可以使用 .+ 代替)

Demo

如果您只想允许大写字符和数字,您可以使用:

<(@[0-9A-Z@]+)>\s+(.*)

关于python - 正则表达式结束对特定字符的搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50761951/

相关文章:

python - 没有嵌套循环的邻接矩阵

python - 有效负载大小大于 125 字节

php - 在文章引用中使用正则表达式进行模式匹配

具有空格字符的正则表达式后视词

Java - 打印路线和费用

arrays - O(n) 线性搜索数组以查找最常见的项目

python - 无法使用 setup.py 安装 numpy

javascript - Javascript 中的语法高亮

在 Lucene 中搜索属性值对应关系

python -> "operator"用于定义函数