使用正则表达式过滤字符串

时间:2014-07-18 16:50:12

标签: c# regex

嗨我需要过滤一个带有常规表达式的字符串。我已经读过我必须使用方法替换Regex类的方法,但我不知道Expresion Regular我需要过滤我的String。 我有一个大字符串s,我想要提取或过滤?在字符串的下一个模式中: "字符串固定?_IP" string fixed是一个总是相同的字符串 IP是有效的IP号

我需要将模式传递给函数替换类Regex以获取字符串吗?

我尝试了一些模式,但任何人都可以工作。

pattern1="(ftp_files\\?_[0-9]+.[0-9]+.[0-9]+.[0-9]+)"
pattern2= "(ftp_files\\?_/^(([1-9]?[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]).){3}([1-9]?[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/)"

ftp_files \是固定的字符串

在pattern2中,我尝试使用expresion regular来验证IP。

1 个答案:

答案 0 :(得分:0)

如果您想要提取信息,则无需致电Regex.Replace。你必须为此致电Regex.Match。或者,如果您真的想致电Replace,请告诉我们您要替换的部分,替代品应该是什么样的。

var match = Regex.Match(inputString, @"ftp_files\\\?_(?<ip>\d+\.\d+\.\d+\.\d+)");
var ipAddress = match.Groups["ip"].Value;

在这里,我为ip地址(\d+\.\d+\.\d+\.\d+)选择了一个更清晰的正则表达式。如果您确实需要确保IP的每个字节都有效,则可以使用以下内容替换该表达式中的\d+的每个实例:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)


编辑:如果你想提取ftp_files\_IP之间的内容,这里是正则表达式:

var match = Regex.Match(inputString, @"ftp_files\\(?<value>.*?)_(?<ip>\d+\.\d+\.\d+\.\d+)");
var value = match.Groups["value"].Value;