您如何表达字符串与以下内容匹配的正则表达式。
text, text, number
笔记:
text = 可以是任意数量的单词或空格。
number = 大多数是 4 位数字。
逗号 (,) 也必须匹配。
例如,以下字符串是有效的:
'Arnold Zend, Red House, 2551'
您如何表达字符串与以下内容匹配的正则表达式。
text, text, number
笔记:
text = 可以是任意数量的单词或空格。
number = 大多数是 4 位数字。
逗号 (,) 也必须匹配。
例如,以下字符串是有效的:
'Arnold Zend, Red House, 2551'
正则表达式模式将是(括号是捕获组,以防您要访问各个项目:
([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测试了表达式,它工作正常。
我会使用正则表达式:
(?<Field1>[\w\s]+)\s*,\s*(?<Field2>[\w\s]+)\s*,\s*(?<Number>\d{4})
\w
= 所有字母(大写和小写)和下划线。+
表示一个或多个。
\s
= 空白字符。*
表示零个或多个。
\d
= 数字 0 到 9。{4}
表示它必须是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;
}
要与 Unicode 兼容:
^[\pL\s]+,[\pL\s]+,\pN+$
尝试这个 -
[\w ]+, [\w ]+, \d{4}
([a-zA-Z\s]+), ([a-zA-Z\s]+), ([0-9]{4})