文字列が次のように一致する正規表現をどのように表現しますか。
text, text, number
ノート:
text =は、任意の量の単語またはスペースにすることができます。
数値=ほとんどが4桁の数値です。
カンマ(、)も一致する必要があります。
例として、次の文字列が有効です。
'Arnold Zend, Red House, 2551'
文字列が次のように一致する正規表現をどのように表現しますか。
text, text, number
ノート:
text =は、任意の量の単語またはスペースにすることができます。
数値=ほとんどが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
=すべての文字(大文字と小文字)とアンダースコア。1つ以上+
を示します。
\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;
}
これを試して -
[\w ]+, [\w ]+, \d{4}
([a-zA-Z \ s] +)、([a-zA-Z \ s] +)、([0-9] {4})
Unicodeと互換性を持たせるには:
^[\pL\s]+,[\pL\s]+,\pN+$