パターンは次のとおりです。
string str =
"+++++tom cruise 9:44AM something text here \r\n +++++mark taylor 9:21PM";
またはで始まり、または+++++
で終わる文字列のみが選択されます。Regex.split または linq クエリ パターンとは何ですか?AM
PM
タロンはほとんどそれを手に入れましたが、貪欲ではなく、最小限のキャプチャが必要です. 試す
[+]{5}.*?(A|P)M
この正規表現を試してください:
@"[+]{5}[^\n]+[AP]M"
var str = "+++++tom cruise 9:44AM something text here \r\n +++++mark taylor 9:21PM";
var match = Regex.Match(str, @"[+]{5}[^\n]+[AP]M").Captures[0];
match.Value.Dump();
出力:
+++++tom cruise 9:44AM
また:
@"[+]{5}\D+\d{1,2}:\d{1,2}[AP]M
この正規表現をお勧めします。これは、xY:xY:AM/PM の形式 (Y はオプション) の時まで一致します。試乗:
string str = "+++++tom cruise 9:44AM something text here \r\n +++++mark taylor 9:21PM";
foreach(Match match in Regex.Matches(str, @"[+]{5}\D+\d{1,2}:\d{1,2}[AP]M"))
Console.WriteLine(match.Value);
出力:
+++++tom cruise 9:44AM
+++++mark taylor 9:21PM
正規表現は次のようになります。
[+]{5}.*AM|[+]{5}.*PM
ここで試すことができます: http://regexpal.com/
最初のキャプチャは次のとおりです。
+++++tom cruise 9:44AM
そして2番目は
+++++mark taylor 9:21PM
これを使って:
bool bResult = false;
String strInput = @"+++++tom cruise 9:44AM something text here \r\n +++++mark taylor 9:21PM";
foreach (string s in strInput.Split(new[]{'\r', '\n'}, StringSplitOptions.RemoveEmptyEntries))
{
bResult |= Regex.IsMatch(s, @"^[+]+.+[AP]M$");
}
または結果を得るために:
var listResult = new List<string>();
String strInput = @"+++++tom cruise 9:44AM something text here \r\n +++++mark taylor 9:21PM";
foreach (string s in strInput.Split(new[]{'\r', '\n'}, StringSplitOptions.RemoveEmptyEntries))
{
listResult.Add(Regex.Match(s, @"^[+]+(?<result>.+)[AP]M$").Groups["result"].Value);
}
これは、必要に応じて文字列を検索する正確な正規表現コードです
string str = "+++++tom cruise 9:44AM something text here \r\n +++++mark taylor 9:21PM asdasd";
var fileNames = from Match m in Regex.Matches(str, @"\++\++\++\++\++.+(PM|AM)")
select m.Value;
foreach (var s in fileNames)
{
Response.Write(s.ToString() + "\r\n");
}