我想提取:之后的内容,但只能有一个:.

例如:

foo:bar             # match, extract 'bar'
foo:123             # match, extract '123'

foo:bar:123         # do not match

因此最后一个示例不应该匹配,因为它有多个:.

我try 了负向回溯^.+(?<!:):(.+)$,但仍然匹配并提取了最后一个示例.

这是a demo美元.

推荐答案

try (regex101):

^[^:]+:([^:]+)$

这将只匹配带有一个:的行,并获取:之后的字符串

.net相关问答推荐

.NET restore/build在使用组织包的Github Action工作流中调用时获得401

";Make Async ValueTask/ValueTask方法分期分配发生了什么?

更改列表中的值

如何调试 .NET 运行时中的内部错误?

为什么 .Contains 慢?通过主键获取多个实体的最有效方法?

C# 是否(或将)包含用于副作用验证的功能?

如何在 EF 代码优先中禁用链接表的级联删除?

使用返回随机结果的函数进行单元测试

使用 IIS Express 托管网站(临时)

C# 有办法给我一个不可变的字典吗?

SubscribeOn 和 ObserveOn 有什么区别

实体框架 - 无法将 lambda 表达式转换为类型字符串,因为它不是委托类型

如何授予所有用户对我的应用程序创建的文件的完全权限?

如何在可取消的异步/等待中处理 TransactionScope?

.NET 事件 - 什么是对象发送者和 EventArgs e?

风格上的差异:IDictionary vs Dictionary

如何找到二维数组的大小?

对构造函数进行单元测试重要吗?

/langversion 的错误选项6无效;必须是 ISO-1、ISO-2、3、4、5 或默认值

可以从 C# 调用 C++ 代码吗?