c# - 匹配前缀后由空格分隔的字符序列

标签 c# regex

我有以下字符串:

  1. -prefix <@141222969505480701>第二部分例如<@141222969505480701>可以无限次重复(只有数字会改变)。
  2. -prefix 141222969505480701这应该与上面的行为相同。
  3. -prefix 141222969505480701 <@141222969505480702>它仍然能够永远重复自己。

最后一个应该包含包含 141222969505480701 的组和 141222969505480702 .

一些信息:

  • 数字链总共总是 18,所以我在我的正则表达式中使用\d{18}
  • 我希望将这些号码分组以便以后使用。

我尝试了什么

首先,我尝试匹配我的示例字符串中的第一个。 -prefix(\s<@\d{18}>)\1*这将匹配整个字符串,但我希望将数字本身放在自己的组中。此外,此方法仅匹配相同的部分,例如<@141222969505480701> <@141222969505480701> <@141222969505480701>会匹配,但两者之间的任何其他数字都不会匹配。

什么在我的脑海中听起来合乎逻辑

-prefix (\d{18})+但它只会匹配“数字部分”的第一个。

当我在 regex101 上测试它时,它告诉我以下内容:

A repeated capturing group will only capture the last iteration. Put a capturing group around the repeated group to capture all iterations or use a non-capturing group instead if you're not interested in the data.

我尝试将正则表达式调整为以下 -prefix ((\d{18})+) , 但结果相同。

最佳答案

在评论中@madreflection 的帮助下,我想出了这个解决方案:

-prefix([\s]*(<@|)(?<digits>[0-9]{18})>?)+

这正是我所需要的,甚至忽略了中间的空格。也与 match.Groups["digits"].Captures 一起使用这让整个故事变得简单多了。

关于c# - 匹配前缀后由空格分隔的字符序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57696832/

相关文章:

c# - 如何使用 .NET 获得以字节缩写形式的人类可读文件大小?

c# - 将 .bot 文件中的设置迁移到 appsettings 时如何修复机器人配置

c# - 结合XmlNodelist

php - 正则表达式 : How to Express\w Without Underscore

r - 检查一个字符串是否在R中至少包含一个数字字符

javascript - 正则表达式忽略大小写

java - 将任何字符串格式化为逗号分隔

java正则表达式对于多个组失败

c# - 如何在VB.NET中使用BeginInvoke

c# - 可以将 Excel 文档加载到内存中、填充并以字节形式返回吗?