C# 正则表达式从输入中提取组

标签 c# regex

我想使用 C# 在任意输入中提取两个冒号(包括冒号)之间的任何内容。鉴于

String input = "a:one:b:two:c:three:d";

我要

{string[3]}
[0]: ":one:"
[1]: ":two:"
[2]: ":three:"

使用

String[ ] inverse = Regex.Split( input, ":.*?:" );

我得到的结果与我想要的相反......

{string[4]}
[0]: "a"
[1]: "b"
[2]: "c"
[3]: "d"

在这种情况下,我该如何反转它或者是否有比 Regex.Split 更合适的东西?

最佳答案

怎么样 :[^:]+: 1.匹配冒号 2. 后跟任何非冒号字符一次或多次。 3. 后跟一个冒号。

要获取匹配集,请使用 MatchCollection matches = Regex.Matches(blah, ":[^:]+:"); 而不是 Regex.Split

正则表达式简洁而强大,但我发现自己在使用它们时编写的注释与编码时一样多。

关于C# 正则表达式从输入中提取组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7617982/

相关文章:

Oracle SQL 中的正则表达式,正向展望

c# - 正则表达式用 C# 从 CDATA 中解析出 html

regex - 使用正则表达式将字符串包含到另一个字符串中

c# - 没有证书的 TransportWithMessageCredential 对于 WCF 服务是否足够安全?

c# - 配置管理器类。锁定时无法编辑 ConfigurationSection 属性

c# - CosmosDB DocumentCollection 在创建后可以更改其分区键吗?

javascript - 仅替换并提交文本字母,不含空格和句点逗号和其他符号

c# - 将额外参数传递给事件处理程序?

c# - 将字符串数字转换为整数

Java 正则表达式 : To know the number of rows to be returned by a SQL Query