私は本当に近いですが、私は正規表現の専門家ではありません。ここに私の入力文字列があります。コロンの後の10進数だけを一致させる正規表現
DCIN : 11.896V
5V : 4.988V
Vcom : 0.008V
5VStby: 4.992V
48V : 0.042V
48I : 0mA
コロンの後の数値のみを入力します。これは私がこれまで持っているもの
/[^\D]+\.?[^\D]+/
であり、それはまた2つの48のインスタンスをつかんだし、それが0
私は本当に近いですが、私は正規表現の専門家ではありません。ここに私の入力文字列があります。コロンの後の10進数だけを一致させる正規表現
DCIN : 11.896V
5V : 4.988V
Vcom : 0.008V
5VStby: 4.992V
48V : 0.042V
48I : 0mA
コロンの後の数値のみを入力します。これは私がこれまで持っているもの
/[^\D]+\.?[^\D]+/
であり、それはまた2つの48のインスタンスをつかんだし、それが0
あなたの正規表現を取得していないことは、それがない理由つまり、最後に少なくとも2桁が必要です最後の行でゼロにマッチします。コロンの後ろにマッチするパターンに制限はありません。
使用
var res = Regex.Matches(s, @":\s*(\d*\.?\d+)")
.Cast<Match>()
.Select(m=>m.Groups[1].Value)
.ToList();
詳細参照してください:
:\s*
- コロンと0個以上の空白(\d*\.?\d+)
- 値を保持しているキャプチャグループ1にあなたを必要:
\.?
- 任意ドット\d+
- 一つ以上の桁。ああそう近くにコロンや空白を入れたくない –
Nevermind、私はRegExテスターではなく、Cで試してみた治療をします! –
ここでは、* capture *を使用するのは、マッチの* parts *にアクセスできるようにすることです。重複したマッチが必要な場合には、ここでのケースではなく、ルックアバウトを使用することが理にかなっています。 "Regex.Matches(s、@"(?<=:\ s *)\ d * \?\ d + ")を使用することもできます。 ).ToList(); 'しかし、上記の解決策はより自然な方法で行います(.NETはlookbehindの中で' * 'と' + 'を使用できるようにする数少ない正規表現エンジンの1つです)。 –
私はコロンの後にthis
^[^:]*:\s*(\d+(?:\.\d*)?)
のみ小数点以下を行うだろうか?最初の行は '896'ですか?それはその数字の小数部です。 –
'Regex.Matches(s、@":\ s *(\ d * \?\ d +) ")。あなたが '11.896'、' 4.988'などを取得する必要がある場合 –