Go 正規表現解析エラー: (?!
Go で次の正規表現をコンパイルしようとすると、エラーが発生します:
error parsing regexp: invalid or unsupported Perl syntax: (?!
このエラーは、Go 正規表現エンジンが Perl 固有の構文であるルックアラウンドをサポートしていないことが原因で発生します。ルックアラウンドは、現在の位置の周囲に特定のパターンが存在するかどうかを確認する正規表現パターンであり、特定の複雑なテキスト マッチング タスク。
回避策
Go はネイティブでルックアラウンドをサポートしていないため、回避策としては、指定されたパターンの有無を手動で確認する必要があります。 regex:
^(?!On.*On\s.+?wrote:)(On\s(.+?)wrote:)$
次のアプローチを使用できます:
absencePattern := regexp.MustCompile("^(?!On.*On\s.+?wrote:)(On\s(.+?)wrote:)$") presencePattern := regexp.MustCompile("^(On.*On\s.+?wrote:$")
if absencePattern.MatchString(input) && !presencePattern.MatchString(input) { // The pattern is absent } else { // The pattern is present }
追加オプション
または、オプションのキャプチャ グループを使用して同じ結果を達成することもできます。
pattern := regexp.MustCompile(`^On(.*On)?\s.+?wrote:`) if match := pattern.FindStringSubmatch(input); match != nil { // match is nil if no match found if match[1] != "" { // Group 1 ends with "On" return false } return true }
このアプローチでは、別個の正規表現パターンが不要になり、コードを簡素化しながらコードを簡素化できます。必要な機能。
以上がGo Regex が「無効またはサポートされていない Perl 構文: (?!」エラーをスローする理由とその回避方法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。