所以我有一个字符串,我正在尝试使用 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+(.*)
或者不使用.+?
,您可以使用[^>]+
这会匹配
- 匹配
<
-
(@[^>]+)
在组 1 和@
中捕获,那么就不是>
使用否定字符类 - 匹配
>
-
\s+
匹配一个或多个空白字符 -
(.*)
捕获第 2 组中的零个或多个字符(如果后面必须有至少 1 个字符,则可以使用.+
代替)
如果您只想允许大写字符和数字,您可以使用:
关于python - 正则表达式结束对特定字符的搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50761951/