「Regex too complicated (正規表現が複雑すぎます)」というエラーが発生する原因には、どのようなものがありますか ?
発生しているエラー「System.Exception: Regex too complicated (正規表現が複雑すぎます)」は、2 つの異なるイベントで発生します。
1.Matcher が複雑すぎる。
Salesforce では、正規表現の入力シーケンスにアクセスできる回数を 1,000,000 回に制限しています。この制限に達すると、ランタイムエラーが発生します。
したがって、Matcher 文字列は 100 万文字を超えることはできません。この場合、Matcher 文字列の長さをチェックし、文字列が 100 万文字を超える場合は実行されないようにする必要があります。
2.パターンが複雑すぎる。
これは複雑なパターンの例です。
Pattern pat = Pattern.compile('(A)?(B)?(C)?(D)?(E)?(F)?(G)?(H)?(I)?(J)?(K)?(L)?(M)?(N)?(O)?(P)?(Q)?(R)?(S)?(T)?(U)?(V)?(W)?(X)?(Y)?(Z)?(AA)?(AB)?(AC)?(AD)?(AE)?(AF)?(AG)?(AH)?(AI)?(AJ)?(AK)?(AL)?(AM)?(AN)?(AO)?(AP)?(AQ)?(AR)?(AS)?(AT)?(AU)?(AV)?(AW)?(AX)?(AY)?(AZ)?$');
Matcher mat = pat.matcher('asdfasdfasdfasdfasdfasdf');
この種別のパターンは、どの文字列でも失敗します。
このように、このエラーは 2 つのオプション (上述) のうちの 1 つが原因で発生する可能性があります。経験則として、エラーが常に起こる場合は、パターンに問題があるため、解決策はパターンを単純化することです。この問題がまれに起きる場合は、Matcher が 100 万文字を超えているため、文字列を分割してから処理する必要があります。
この操作はサーバーにとって非常に時間がかかるため、この例外が検出された場合は、プロセスがすでに CPU 時間を使いすぎているため、プロセスがすぐに強制終了されます。これがエラーをトラップできない理由ですが、適切なコーディング方法を実践して、ユーザーにこのエラーが表示されないようにする必要があります。
一般的に、100 万文字のアクセス制限が発生する可能性を最小限に抑えるために、次の推奨事項の 1 つ以上を実装する必要があります。
1.入力シーケンスを削減します。
2.入力シーケンスと比較されるパターンの数を削減、結合、削除します (特に冗長性)。
3。すべてのバッチを処理する必要がある場合は、入力シーケンスを半分に分割し、入力シーケンスを半分に切り、中間点の後の次の期間を見つけ、それを 1 つのバッチとして処理し、残りを @future コールで 2 つ目のバッチとして処理することで、ある程度の余裕を得ることができる場合があります(これは非同期の制限を受けるため、このアプローチはユースケースや利用可能な非同期コールなどに大きく依存します)。
000385345

We use three kinds of cookies on our websites: required, functional, and advertising. You can choose whether functional and advertising cookies apply. Click on the different cookie categories to find out more about each category and to change the default settings.
Privacy Statement
Required cookies are necessary for basic website functionality. Some examples include: session cookies needed to transmit the website, authentication cookies, and security cookies.
Functional cookies enhance functions, performance, and services on the website. Some examples include: cookies used to analyze site traffic, cookies used for market research, and cookies used to display advertising that is not directed to a particular individual.
Advertising cookies track activity across websites in order to understand a viewer’s interests, and direct them specific marketing. Some examples include: cookies used for remarketing, or interest-based advertising.