c# 正規表現マッチの例
2023-10-03 04:19:32
質問
私は次のテキストから値を取得しようとしています。これはどのようにRegexで行うことができますか?
入力
<ブロッククオートダウンロード%#456 の場合、ダウンロード%#3434 の場合、ダウンロード%#3434 の場合、ダウンロード%#3434 の場合。このような場合、このアプリケーションを使用することはできません。このような場合は、%download%#298 に従ってください。ダウンロード%#893434を使用することで、より多くの時間を節約することができます.
出力
456
3434
298
893434
どのように解決するのですか?
つまり、"%download%#" というトークンが先行する数値を取得しようとしているのですね。
このパターンを試してみてください。
(?<=%download%#)\d+
これでうまくいくはずです。私は
#
または
%
は.NET Regexの特殊文字ですが、バックスラッシュをエスケープして
\\
を使うか、あるいは
の逐語的文字列
を使うこともできます。
var regex = new Regex(@"(?<=%download%#)\d+");
return regex.Matches(strInput);
ここでテストしたのは http://rextester.com/BLYCC16700
注意
lookbehindアサーション
(?<=...)
は重要です。
%download%#
を結果に含めず、それ以降の数字だけを結果に含めたいからです。しかし、この例ではキャプチャしたい各文字列の前にそれが必要なようです。lookbehindグループは入力文字列の中にそれがあることを確認しますが、返される結果にはそれを含めません。
ルックアラウンドアサーションについての詳細はこちら。
関連
-
[解決済み】指定されたキャストが有効でない?
-
[解決済み】"The ConnectionString property has not been initialized "を修正する方法
-
[解決済み] DBNullから他の型にオブジェクトをキャストすることができない
-
[解決済み] 'IEnumerable<SelectListItem>' 型の ViewData アイテムで、キーが国であるものは存在しない。
-
[解決済み】Socket.Selectがエラー "An operation was attempted on something that is not a socket" を返す。
-
[解決済み】エラー「必要なフォーマルパラメータに対応する引数が与えられていない」を解決する?
-
[解決済み] [Solved] .NETでスレッドの終了を待つには?
-
[解決済み】パラメータ付きRedirectToAction
-
[解決済み】ユーザー設定値を別のユーザー設定値で設定する
-
[解決済み】スレッド終了またはアプリケーションの要求により、I/O操作が中断されました。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】指定されたキャストが有効でない?
-
[解決済み】"出力タイプがクラスライブラリのプロジェクトは直接起動できない"
-
[解決済み】Ajax処理で「無効なJSONプリミティブ」と表示される件
-
[解決済み】統合マネージドパイプラインモードで適用されないASP.NETの設定が検出された
-
[解決済み] エンティティタイプ <type> は、現在のコンテキストのモデルの一部ではありません。
-
[解決済み】リソースの読み込みに失敗した:ステータス500(内部サーバーエラー)のサーバーの応答)
-
[解決済み】取り消せないメンバはメソッドのように使えない?
-
[解決済み】5.7.57 SMTP - MAIL FROMエラー時に匿名メールを送信するためにクライアントが認証されない
-
[解決済み】インデックスが範囲外でした。コレクションパラメータname:indexのサイズより小さく、非負でなければなりません。
-
VSでscanfエラーを恒久的に解決するには、ソースファイルを作成し、自動的に#define _CRT_SECURE_NO_WARNINGS 1を追加してください。