c# - 在 C# 中使用正则表达式(正则表达式)从字符串中获取值

标签 c# regex string expression

我想使用正则表达式从字符串中获取一些值。我将继续解释:

  • 有一个字符串:“Player #0 Agentep97 (12.34.56.78:1234) connected”
  • 我想获取#[NUMBER]、用户名 ("Agentep97")、([IP]:[Port]) 值

我已经尝试过 var match = Regex.Match(input, @"Player #(?<player_id>[0-9]{1,3})\s(?<user>.+)\s\((<ip1>\d{1,3})\.(<ip2>\d{1,3})\.(<ip3>\d{1,3})\.(<ip4>\d{1,3})\:(<port>\d{1,5}$)\) connected\W\D\S", RegexOptions.IgnoreCase);但我的比赛没有成功,所以我无法获得 player_id.Value 等。

你会怎么做?是“var match”不正确还是什么?

提前致谢!

最佳答案

正是因为这个原因,正则表达式可能令人沮丧:它通常是全有或全无,没有明确的解释为什么它不起作用。我建议的是我如何着手审查您的正则表达式。我一次添加一个字符/组,直到它停止匹配(使用非常有用且主要与 .NET 兼容的工具 Rubular ),然后查看是什么破坏了正则表达式。在这种情况下,看起来您只是忘记了命名组 ip1ip2ip3 中的 ?ip4,和端口:

Player #(?<player_id>[0-9]{1,3})\s(?<user>.+)\s\(
(?<ip1>\d{1,3})\.(?<ip2>\d{1,3})\.(?<ip3>\d{1,3})\.(?<ip4>\d{1,3})\:(?<port>\d{1,5}$)\) connected\W\D\S
 ^                ^                ^                ^                ^

演示:http://www.rubular.com/r/J8dEEE3HnC

关于c# - 在 C# 中使用正则表达式(正则表达式)从字符串中获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20022915/

相关文章:

c# - 带正则表达式的匹配表

c# - GZipStream 压缩问题(Lost Byte)

c# - C#中的this关键字,Linq?

Javascript正则表达式匹配有界文本

regex - 如何在正则表达式中搜索嵌套项目符号列表中的单词组合?

php - 如何实现像 www.example.com/username 这样的 url 以重定向到 www.example.com/user/profile.php?uid=10?

c++ - 从字符串中的整数进行加法运算

c - 以下代码在C语言中的输出是什么?

javascript - 使用点表示法中的对象字符串调用 javascript 函数

c# - 将 Rgb 图像转换为灰度 C# 代码时出现性能问题