1

さまざまな記号を含む文字列がありますが、% と % の間にある 10 文字の英数字の部分文字列を取得する必要があります。ただし、1 つの文字列に % と % の組み合わせが複数含まれている可能性があります

例: %bla1234bla%、または %12aa22bb33% など (% は必要ありません)

私はこれを試しました:

String resultString = Regex.Match(lnk, @"\[%\](.*?)\[%\]{10}").Value;

そして、それは機能しません

4

4 に答える 4

6

次の正規表現を試してください。

@"%[0-9a-zA-Z]{10}%"

またはこれ:

@"%[^\W_]{10}%"

%はいらない

キャプチャ グループを使用して、キャプチャする部分を指定できます。

@"%([0-9a-zA-Z]{10})%"

オンラインでの動作を確認してください: ideone

于 2012-05-05T21:40:57.967 に答える
1

これを試してください:

@"%[\da-zA-Z]{10}%"
于 2012-05-05T21:44:59.873 に答える
1
(?<=%)[\da-zA-Z]{10}(?=%)

正の先読みと後読みを調べることにより、これは実際に % 文字に一致することなく、% 文字間の 10 文字の英数字に一致します。

于 2012-05-05T21:56:52.413 に答える
1

正規表現が必要かどうかはわかりませんが、これはうまくいくようです...

string[] stringArray = testString.Split('%')
                                 .Where(s => s.Length == 10)
                                 .ToArray();
于 2012-05-06T04:02:53.947 に答える