我有一个文件加载到流阅读器中.该文件包含分散的IP地址.在每个IP地址之前和之后,如果有帮助,则为"\".此外,每行的第一个"\"始终在IP地址之前,在第一个之前没有其他"\".
我已经知道我应该使用while循环遍历每一行,但我不知道其余的过程:<
例如:
由Stormix.de提供支持\ 93.190.64.150\7777\False
Cupserver\85.236.100.100\8178 \假
Euro Server\217.163.26.20\7778\False
在第一个例子中我需要"93.190.64.150"在第二个例子中我需要"85.236.100.100"在第三个例子中我需要"217.163.26.20"
我真的很难解析/拼接/切割:s
提前致谢
***我要求将IP保留在一个字符串中,bool返回不足以满足我的要求.
Jay*_*Jay 12
using System.Text.RegularExpressions;
…
var sourceString = "put your string here";
var match = Regex.Match(sourceString, @"\b(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})\b");
if(match.Success) Console.WriteLine(match.Captures[0]);
Run Code Online (Sandbox Code Playgroud)
这将匹配任何IP地址,但也999.999.999.999.如果您需要更精确,请参阅此处的详细信息:http://www.regular-expressions.info/examples.html
该网站有很多很好的信息和正则表达式,这是一种特定于域的语言,在大多数流行的编程语言中用于文本模式匹配.实际上,我认为该网站是由Mastering Regular Expressions的作者整理而成的.
我修改了上面的代码来捕获IP地址,如您所请求的那样(通过在IP地址模式周围添加括号).现在我们检查以确保使用该Success属性匹配,然后您可以使用Captures[0](因为我们只有一个捕获组,我们知道使用第一个索引,0).
编辑:编辑考虑到"开始和结束时的斜线"部分.
尝试将每一行与正则表达式匹配(全部作为一个字符串;为了可读性而拆分).
\\(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}
(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\
Run Code Online (Sandbox Code Playgroud)
完整样本:
using System;
using System.Text.RegularExpressions;
class Program
{
private static readonly Regex Pattern = new Regex
(@"\\(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}" +
@"(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\");
static void Main(string[] args)
{
Console.WriteLine(ContainsAddress("Bad IP \\400.100.100.100\\ xyz"));
Console.WriteLine(ContainsAddress("Good IP \\200.255.123.100\\ xyz"));
Console.WriteLine(ContainsAddress("No IP \\but slashes\\ xyz"));
Console.WriteLine(ContainsAddress("Long IP \\123.100.100.100.100\\ x"));
}
static bool ContainsAddress(string line)
{
return Pattern.IsMatch(line);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8081 次 |
| 最近记录: |