RegEx を使用した .NET プロジェクトで奇妙な問題が 1 つあります。以下の C# コードを参照してください。
const string PATTERN = @"^[a-zA-Z]([-\s\.a-zA-Z]*('(?!'))?[-\s\.a-zA-Z]*)*$";
const string VALUE = "Ingebrigtsen Myre (Øvre)";
System.Text.RegularExpressions.Regex regex = new System.Text.RegularExpressions.Regex(PATTERN);
if (!regex.IsMatch(VALUE)) // <--- Infinite loop here
return string.Empty;
// Some other code
このパターンを使用して、すべてのタイプの名前 (最初の名前、姓、ミドル ネームなど) を検証します。値はパラメーターですが、問題は頻繁に再現されないため、上記の定数として提供しました - *、(、) などの特殊記号のみを使用します (申し訳ありませんが、これらの記号の完全なリストはありません)。 .
この無限ループを修正するのを手伝ってくれませんか? 助けてくれてありがとう。
追加: このコードはプロジェクトの非常に基本的なレベルに配置されており、そこでリファクタリングを行いたくありません。この問題をすばやく修正したいだけです。
追加 2: 技術的にはループではないことは知っています。「regex.IsMatch(VALUE)」が終わらないことを意味していました。約 1 時間待ったが、まだ実行中であった。