c:\my source\file1.cpp (no code)"的正则表达式 (C#)-6ren"> c:\my source\file1.cpp (no code)"的正则表达式 (C#)-我需要在 C# 中解析包含以下内容的字符串: 111 -> c:\my source\file1.cpp (no code) 112 -> c:\my source\file1.cpp 113 -> -6ren">
gpt4 book ai didi

c# - "111 -> c:\my source\file1.cpp (no code)"的正则表达式 (C#)

转载 作者:行者123 更新时间:2023-11-30 15:44:43 26 4
gpt4 key购买 nike

我需要在 C# 中解析包含以下内容的字符串:

111 -> c:\my source\file1.cpp (no code)
112 -> c:\my source\file1.cpp
113 -> c:\my source\file2.cpp
114 -> c:\my source\file3.cpp
115 -> c:\my source\file2.cpp (no code)

我需要获取第一个数字和文件名,但仅限于带有代码的记录(因此末尾不应有(无代码)。目前我已经结束了这个 rexex

new Regex(@"^(\d+) -> ([^\r\n]*)", RegexOptions.Multiline | RegexOptions.IgnoreCase)

它真的很简单,但它给了我一些我不想看到的台词。我所有尝试编写类似 ^(\d+) -> ([^\r\n]*)(?!\(no code\)) 的尝试都失败了。实际上,这可能是一个更通用的示例。喜欢:如何匹配 "aaa BBB ccc" 形式的字符串中的 BBB,其中 BBB 可以是任意一组字符,aaa 和 ccc 是已知标记,由与 BBB 中的字符集相同?

最佳答案

为什么你不能直接使用:

^(\d+) -> ([\w:\\\s.]+)$

应用多行并且它不会允许 (no code) 因为它不包含在最后一组中(最后一组的类中不允许有括号)

demo

如果你确实需要在文件名中允许括号,你可以使用类似的东西:

^(\d+) -> (.+?)(?<! \(no code\))$

它使用负向后视(因此您可以确保它不会在行尾之前出现)。

demo

关于c# - "111 -> c:\my source\file1.cpp (no code)"的正则表达式 (C#),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5871690/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com