嗨我需要过滤一个带有常规表达式的字符串。我已经读过我必须使用方法替换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。
答案 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;