C# 我需要帮助建立一个正则表达式
这是我第一次使用regex,我有点迷路了。为了给你们一点背景知识,我正在制作一个程序,逐行读取文本文件,并将其保存在一个名为“line”的字符串中。如果该行以制表符o或空格开头,后跟一个或多个数字和点(例如1或1.2.1),后跟另一个制表符或空格,则会将该行复制到另一个文件 到目前为止,我构建了这个正则表达式,但它不起作用C# 我需要帮助建立一个正则表达式,c#,.net,regex,C#,.net,Regex,这是我第一次使用regex,我有点迷路了。为了给你们一点背景知识,我正在制作一个程序,逐行读取文本文件,并将其保存在一个名为“line”的字符串中。如果该行以制表符o或空格开头,后跟一个或多个数字和点(例如1或1.2.1),后跟另一个制表符或空格,则会将该行复制到另一个文件 到目前为止,我构建了这个正则表达式,但它不起作用 string pattern = @"(\t| ) *[0-9.] (\t| )"; if (line.StartsWith
string pattern = @"(\t| ) *[0-9.] (\t| )";
if (line.StartsWith(pattern))
{
//copy line
}
另外,line.StartsWith是否正确?或者我应该使用类似于rgx.Matches(pattern)的东西吗?您的模式包含一个不带量词的字符类,它将匹配单个数字或点 为了防止匹配,例如仅匹配点,您可以先匹配数字,然后是匹配点的可选部分,然后再匹配数字
[0-9]+(?:\.[0-9]+)*
请注意,在该部分中,(\t |)
有两个字符需要匹配,因为该部分中的空格具有含义
您可以简化模式,使用字符类来匹配制表符或空格,而不是使用替换,如果不需要捕获组,可以省略它
例如,您可以使用
字符串的开头^
匹配单个选项卡或空格[\t]
匹配1+数字0-9[0-9]+
对一个点和1+位重复0+次(?:\.[0-9]+)*
匹配单个选项卡或空格[\t]
string s = "\t1.2.1 ";
Regex regex = new Regex(@"^[ \t][0-9]+(?:\.[0-9]+)*[ \t]");
if (regex.IsMatch(s)) {
//copy line
}
string.StartsWith()
无法识别正则表达式。您需要System.Text.RegularExpressions.Regex
。
string s = "\t1.2.1 ";
Regex regex = new Regex(@"^[ \t][0-9]+(?:\.[0-9]+)*[ \t]");
if (regex.IsMatch(s)) {
//copy line
}