如何表达字符串与以下内容匹配的正则表达式。
text, text, number
注:
text =可以是任意数量的单词或空格。
number =最多为4位数字。
逗号(,)也必须匹配。
例如,以下字符串有效:
'Arnold Zend, Red House, 2551'
答案 0 :(得分:2)
正则表达式模式是(括号是捕获组,以防您想要访问各个项目:
([a-zA-Z\s]{3,}), ([a-zA-Z\s]*{3,}), ([0-9]{4})
匹配2个名称和4位数字,用逗号分隔,名称长度至少为3个字符。如果您愿意,可以更改名称字符最小值。这是检查字符串是否与此模式匹配的方法:
// 'Regex' is in the System.Text.RegularExpressions namespace.
Regex MyPattern = new Regex(@"([a-zA-Z\s]*), ([a-zA-Z\s]*), ([0-9]{4})");
if (MyPattern.IsMatch("Arnold Zend, Red House, 2551")) {
Console.WriteLine("String matched.");
}
我用RegexTester测试了表达式,它运行正常。
答案 1 :(得分:2)
我会使用正则表达式:
(?<Field1>[\w\s]+)\s*,\s*(?<Field2>[\w\s]+)\s*,\s*(?<Number>\d{4})
\w
=所有字母(大写和小写)和下划线。 +
表示一个或多个。
\s
=空格字符。 *
表示零或更多。
\d
=数字0到9. {4}
表示必须四。
(?<Name>)
=捕获要匹配的组名称和模式。
您可以将其与Regex
命名空间中的System.Text.RegularExpressions
对象一起使用,如下所示:
static readonly Regex lineRegex = new Regex(@"(?<Field1>[\w\s]+)\s*,\s*(?<Field2>[\w\s]+)\s*,\s*(?<Number>\d{4})");
// You should define your own class which has these fields and out
// that as a single object instead of these three separate fields.
public static bool TryParse(string line, out string field1,
out string field2,
out int number)
{
field1 = null;
field2 = null;
number = 0;
var match = lineRegex.Match(line);
// Does not match the pattern, cannot parse.
if (!match.Success) return false;
field1 = match.Groups["Field1"].Value;
field2 = match.Groups["Field2"].Value;
// Try to parse the integer value.
if (!int.TryParse(match.Groups["Number"].Value, out number))
return false;
return true;
}
答案 2 :(得分:0)
试试这个 -
[\w ]+, [\w ]+, \d{4}
答案 3 :(得分:0)
([a-zA-Z \ s] +),([a-zA-Z \ s] +),([0-9] {4})
答案 4 :(得分:0)
兼容unicode:
^[\pL\s]+,[\pL\s]+,\pN+$