」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 如何在沒有反向引用的情況下匹配 Go 中的重複字元?

如何在沒有反向引用的情況下匹配 Go 中的重複字元?

發佈於2024-11-19
瀏覽:299

How to Match Repeating Characters in Go Without Backreferences?

如何在 Go 中使用正規表示式來匹配任意重複字元?

在本文中,我們將解決匹配任意重複字元的挑戰在 Go 中使用正規表示式重複兩次。在其他正規表示式語法(例如 JavaScript)中,此任務通常很簡單,其中可以簡單地使用反向引用來匹配重複字元。然而,Go 的原生正規表示式引擎 (re2) 不支援反向引用。

Can't Use Backreference in Go's re2

提供的JavaScript 範例利用反向引用來捕捉重複字元:

var str = "abccdeff";
var r = /([a-z]{1})\1/g
console.log(str.match(r))

由於缺乏反向引用支持,此模式在 Go 的 re2 中會失敗。

Go 的re2 的替代品

要解決此限制,請考慮以下替代方案:

  • 使用相容的正規表示式函式庫: 像glenn-brown/golang-pkg-pcre這樣的函式庫提供高階功能,包括反向引用,並且與Go的語法相容。
  • 實作自訂循環:開發循環基於 的解決方案,手動分析重複字符,而不依賴正規表示式。

範例自訂循環解決方案

package main

import (
    "fmt"
    "regexp"
)

func main() {
    str := "abccdeff"

    // Find and print repeating characters without using regex
    for i, ch := range str {
        if i 1 
最新教學 更多>
  • PHP 中的 Elvis 運算子是什麼以及它如何運作?
    PHP 中的 Elvis 運算子是什麼以及它如何運作?
    馴服PHP 中的Elvis 運算子(?:)神秘的?: 運算子為某些PHP 程式碼增色不少,讓您感到困惑。這篇簡明的文章深入探討了其神秘的本質,並揭示了其真正的目的。 揭開 ?: 運算子?: 運算符,也稱為「Elvis 運算符, " 功能類似三元運算符。然而,它的獨特之處在於沒有一個表達式...
    程式設計 發佈於2024-11-19
  • 如何在Java中以毫秒精度提取當前時間?
    如何在Java中以毫秒精度提取當前時間?
    在Java中以毫秒精度提取當前時間以YYYY-MM-DD HH:MI:Sec格式獲取當前時間.毫秒,需要對所提供的程式碼進行擴充。修改的關鍵在於細化SimpleDateFormat模式。 提供的程式碼檢索目前時間,不含毫秒資訊:public static String getCurrentTimeS...
    程式設計 發佈於2024-11-19
  • 大批
    大批
    方法是可以在物件上呼叫的 fns 數組是對象,因此它們在 JS 中也有方法。 slice(begin):將陣列的一部分提取到新數組中,而不改變原始數組。 let arr = ['a','b','c','d','e']; // Usecase: Extract till index ...
    程式設計 發佈於2024-11-19
  • 如何從 MongoDB 陣列中刪除物件?
    如何從 MongoDB 陣列中刪除物件?
    MongoDB:從陣列中移除物件在MongoDB 中,您可以使用$ 從嵌入在文件中的陣列中刪除物件拉操作員。如果您希望從陣列中刪除特定對象,則需要提供與確切對象匹配的查詢。 考慮以下文件:{ _id: 5150a1199fac0e6910000002, name: 'some name'...
    程式設計 發佈於2024-11-19
  • 儘管程式碼有效,為什麼 POST 請求無法擷取 PHP 中的輸入?
    儘管程式碼有效,為什麼 POST 請求無法擷取 PHP 中的輸入?
    解決PHP 中的POST 請求故障在提供的程式碼片段:action=''而非:action="<?php echo $_SERVER['PHP_SELF'];?>";?>"檢查$_POST陣列:表單提交後使用 var_dump 檢查 $_POST 陣列的內容...
    程式設計 發佈於2024-11-19
  • 前端控制器設計模式在 PHP 應用程式中的作用是什麼?
    前端控制器設計模式在 PHP 應用程式中的作用是什麼?
    理解前端控制器設計模式作為一個踏入PHP世界的新手,您可能遇到過“前端控制器”這個術語。 「這種模式對於組織和維護應用程式的結構至關重要。讓我們深入研究一下它的功能和實現。什麼是前端控制器?前端控制器是處理所有傳入請求的中央集線器。的更改,而不會影響應用程式的其餘部分。所有請求重定向到指定的入口點,...
    程式設計 發佈於2024-11-19
  • 如何在 PHP 中組合兩個關聯數組,同時保留唯一 ID 並處理重複名稱?
    如何在 PHP 中組合兩個關聯數組,同時保留唯一 ID 並處理重複名稱?
    在 PHP 中組合關聯數組在 PHP 中,將兩個關聯數組組合成一個數組是常見任務。考慮以下請求:問題描述:提供的代碼定義了兩個關聯數組,$array1 和 $array2。目標是建立一個新陣列 $array3,它合併兩個陣列中的所有鍵值對。 此外,提供的陣列具有唯一的 ID,而名稱可能重疊。要求是建...
    程式設計 發佈於2024-11-19
  • 如何使用 mysqldb 將 MySQL 表轉換為 Python 中的字典清單?
    如何使用 mysqldb 將 MySQL 表轉換為 Python 中的字典清單?
    Python: 使用mysqldb 將MySQL 表轉換為字典物件清單將MySQL 表轉換為字典物件清單Python,您可以利用mysqldb庫提供的DictCursor 類別。透過利用這個遊標類,您可以方便地將表中的每一行轉換為對應的字典。 若要使用DictCursor,請依照下列步驟操作:連接到...
    程式設計 發佈於2024-11-19
  • 為什麼使用者必須雙擊才能使用網站上的顯示隱藏按鈕?
    為什麼使用者必須雙擊才能使用網站上的顯示隱藏按鈕?
    雙擊困境:顯示-隱藏按鈕滯後的簡單修復在您的網站上實現顯示-隱藏按鈕時,您可能會遇到意想不到的問題:使用者必須第一次雙擊按鈕才能切換隱藏元素。這種行為可能會令人沮喪,因此讓我們深入研究一個簡單的解決方案以確保點擊功能。 在提供的 JavaScript 程式碼中,showhidemenu() 函數負責...
    程式設計 發佈於2024-11-19
  • 如何使用遞歸宏迭代宏參數?
    如何使用遞歸宏迭代宏參數?
    宏參數上的 Foreach 宏在程式設計領域,宏提供了執行重複任務的便捷方法。然而,嘗試建立一個迭代另一個巨集的參數的巨集可能會帶來挑戰。讓我們探討如何克服這個障礙並深入研究遞歸宏的領域。 遞歸巨集可用來遍歷傳遞給巨集的參數清單。然而,這種方法可能容易出錯,因為它可能會導致無限遞歸。為了解決這個問題...
    程式設計 發佈於2024-11-19
  • 學習編碼?避免過度使用人工智慧工具
    學習編碼?避免過度使用人工智慧工具
    如果您剛開始編碼,使用 AI 產生代碼聽起來可能是成功的捷徑。但實際上,它可能會以你可能沒有意識到的方式阻礙你。事情是這樣的:作為一名新程式設計師,您的主要重點應該是學習基礎知識並打下堅實的基礎。編碼不是魔法,也不是寫優美的詩。它是向電腦提供清晰的逐步指令來完成真正的事情。 以 JavaScrip...
    程式設計 發佈於2024-11-19
  • 如何在 C++ 中對所有可變參數模板參數呼叫函數?
    如何在 C++ 中對所有可變參數模板參數呼叫函數?
    C 可變參數模板:在所有模板參數上調用函數在C 中,通常需要迭代可變參數模板參數並執行特定操作,例如調用一個函數。這可以使用以下任一方法來實現:C 17 Fold Expression(f(args), ...);但是,如果被呼叫的函數可能傳回一個物件對於重載的逗號運算符,您應該使用:((void)...
    程式設計 發佈於2024-11-19
  • 使用 html css 和 javascript 的導覽列抽屜 https://www.instagram.com/webstreet_code/
    使用 html css 和 javascript 的導覽列抽屜 https://www.instagram.com/webstreet_code/
    在 Instagram 上關注我們:https://www.instagram.com/webstreet_code/ 抽屜 *{ 保證金:0; 填充:0; 框大小:邊框框; 字體系...
    程式設計 發佈於2024-11-19
  • 如何存取 Python `pytz` 庫中所有可用時區的清單?
    如何存取 Python `pytz` 庫中所有可用時區的清單?
    如何列出 Pytz 時區Python 的 pytz 函式庫提供了大量時區來處理時態資料。如果您希望探索時區參數的所有可能值,請按照下列步驟操作:使用pytz.all_timezones要取得所有可用時區的完整列表,請使用pytz 的all_timezones 屬性:import pytz pytz....
    程式設計 發佈於2024-11-19
  • 如何在 JavaScript 中解析和格式化 ISO 8601 日期字串?
    如何在 JavaScript 中解析和格式化 ISO 8601 日期字串?
    在JavaScript 中解析ISO 8601 日期字串在JavaScript 中處理日期時,您可能會遇到ISO 8601 日期字串,它遵循特定的規則格式:CCYY-MM-DDThh:mm:ssTZD。為了存取和操作這些日期,讓我們探索一個簡單而有效的解決方案。 值得慶幸的是,JavaScript ...
    程式設計 發佈於2024-11-19

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3