0

任意の文字列でパターン「[Number1、Number2]」を見つけて、Number1とNumber2の整数(32ビット)値を取得します。

入力例:「FooBar[45,66]Bash」

結果の例:Number1 = 45 Number2 = 66

私のdeitelの本にこの例があり、RegexExpを取得できないようです。構文は正しい。誰かが私を助けることができますか?

4

2 に答える 2

4

これは、次の場合にのみ機能するはずです[number,number]

var match = Regex.Match(input, @"\[(\d+),(\d+)\]");

var first = match.Groups[1].Value;
var second = match.Groups[2].Value;

var result = string.Format("Number1={0} Number2={1}", first, second);

myregextester.comをテストしました。

于 2012-07-07T23:49:23.413 に答える
0

正規表現...今ではとても役に立ちます。ただし、標準以前は、プログラマーにはStackOverflowでコミュニティのサポートを求める余裕がありませんでした。実際...多くのプログラマーは、当時、単純な文字列検索を実行しようとしたときに「スタックオーバーフロー」に遭遇しました。

文字列内の文字列を検索する必要があり、正規表現を使用する機能がない場合は、非常に特殊な方法で文字列を検索して式を検索する必要があります。文字列は、nullで終了する文字の配列です。その構造は文字列クラスで実装されますが、内部では、最終位置にnull値を持つ文字配列です。

次の文字列があるとします。

string arrayOfCharactersToSearch = "This is the null terminated array of characters to search.";

ここで、その文字列内で「配列」を検索したいとします。文字列内の文字の「チャンク」を調べる必要があります。しかし、一度に1つの文字を移動してから「配列」を探すだけでは、効率が悪いため、これを行うことはできません。また、文字の組み合わせを見逃す可能性があるため、「配列」と同じ長さのチャンクを見てそれを行うことはできません。

解決策は、各「チャンク」を検索条件の長さ(この場合は「配列」を2で割った値に1を加えたもの)だけ進めることです。

    *chunk = ( string length / 2 ) + 1*

幸いなことに、現在は正規表現があり、BSはすべて内部で行われていますが、それがどのように機能するかを理解することは依然として重要です...そうですか?

于 2012-07-08T02:41:25.510 に答える