C# 正则表达式提取两个字符之间的字符串,但第一个字符多次出现

标签 c# regex

我正在尝试提取两个字符之间的字符串。第一个字符多次出现,我需要第一个字符的最后一次出现。我已经检查过类似的问题,但在第一个字符多次出现的情况下,所有建议的正则表达式都不起作用。

例子:

TEST-[1111]-20190603-25_TEST17083

我的代码:

string input = "TEST-[1111]-20190603-25_TEST17083";
var matches = Regex.Matches(input,@"(?<=-)(.+?)(?=_)");
var match = matches.OfType<Match>().FirstOrDefault();
var value = match.Groups[0].Value;

当前结果:

[1111]-20190603-25

预期结果:

25

最佳答案

让我们尝试一些不同的模式:

(?<=-)([^-_]+?)(?=_)

我们使用 [^-_] 而不是 :所有字符 except - _

关于C# 正则表达式提取两个字符之间的字符串,但第一个字符多次出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56425237/

相关文章:

c# - selenium webdriver (c#) - 遍历选择菜单的最佳方式 - 然后验证元素样式更新?

c# - 在 C# 中计算 future 纪元时间

c# - 正则表达式 - 删除表达式内的零

javascript - Chrome 和 Safari 的正则表达式负向前瞻

mysql - SQL 查询 reg.ex。匹配

c# - 如何在 ServiceStack 自托管中设置静态文件的根路径

c# - WindowsInstaller msi数据库查询sql有什么限制

c# - 参数 HTTP Post c#

Java Pattern 导致堆栈溢出

regex - 如何使用正则表达式删除文件开头的文本?