我有一个字符串,长这样:
<@399969178745962506> hello to <@!104729417217032192>
我有一个包含以下内容的字典:
{"399969178745962506", "One"},
{"104729417217032192", "Two"}
我的目标是将<@399969178745962506>
替换成那个数字键的值,而在这种情况下,它应该是One
。
Regex.Replace(arg.Content, "(?<=<)(.*?)(?=>)", m => userDic.ContainsKey(m.Value) ? userDic[m.Value] : m.Value);
我的当前正则表达式如下:
(?<=<)(.*?)(?=>)
,它仅匹配在<
和>
之间的内容,在这种情况下会匹配@399969178745962506
和@!104729417217032192
。我不能忽略
@
符号,因为并不是每次都有!
符号。所以最好只使用类似于\d+
的内容来获取数字。我需要找出如何只获取
<
和>
之间的数字,但我无论如何也想不出来。非常感谢您的帮助!
<@399969178745962506> hello to <@!104729417217032192>
就会变成[0] = 399969178745962506,[1] = 104729417217032192
。 - Ezzy.*
之前的一个non-capturing
组中使@
和!
变为可选项 - 请查看更改。 - Patrick Artner