我想使用正则表达式从字符串中获取一些值。我将继续解释:
- 有一个字符串:“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 ),然后查看是什么破坏了正则表达式。在这种情况下,看起来您只是忘记了命名组 ip1
、ip2
、ip3
中的 ?
, 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
^ ^ ^ ^ ^
关于c# - 在 C# 中使用正则表达式(正则表达式)从字符串中获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20022915/