私はRegexとC#で一致しようとしている文字列を持っています。C#Regexと一致しないRegex101
文字列はHello1004,"7"
です。
私は(複数のスペース、1004
前[
または,
があるかもしれません。)
1004
は常に1004
ではないかもしれないが、それは常になります
var reg = new Regex(@"hello\s*\[?\s*,?\s*(?<group1>\d+)\s*,\s*""(?<group2>[^""]+)""", RegexOptions.IgnoreCase);
で正規表現を作成しています4桁の数字。私が取得しようとしている何
は次のとおりです。
- グループ1:
1004
- グループ2:
7
あなたはRegex101デモhereを見ることができます。
それはデモで完璧に動作しますが、
foreach (var match in reg.Matches(text))
{
var group1 = match.Groups["group1"]?.Value;
var group2 = match.Groups["group2"]?.Value;
}
group1
が空でやったときとgroup2
はそれで1004
を持っています。 Hello
と1004
の間にスペースを入れると、C#で正常に動作します。
なぜ私はこの2つの間にこの不一致があるのか説明できますか?
私は、Visual Studio 2017を使用している、.NET Frameworkの4
http://ideone.com/FA8WNgを参照してください、それが働いているようです。 –
同じです。 LinqPadでテストしました: var s = @ "Hello1004"、 "7" ""; \t \t var reg = new Regex(@ "hello \ s * \ [?\ s *、?\ s *(? \ d +)\ s *、\ s *" "(? [^" "] + ) "" "、RegexOptions.IgnoreCase); \t \t reg.Match(s)。ダンプ(); –
Vidar
@WiktorStribiżewHmmm ...それはうまくいくようです。しかし、私の実際のアプリケーションでは間違いなく機能しています。該当する場合は、私のバージョンの.NETで質問を更新します。 –