簡體   English   中英

正則表達式接受符合“('a'* N - 'b'* M)%3 = 0”要求的字符串

[英]Regex accepting string that meets “('a'*N - 'b'*M)%3 = 0” requirement

為了進一步研究這個主題,我一直試圖寫一個正則表達式:“來自{a,b}的字母表只有在'a'出現'減'出現'b'時才能接受該字符串可以除以3。” 有人可以幫我處理這件事嗎? 我知道我應該提供自己的任何意見來幫助解決這個問題,但我不知道任何線索。

也許只是它可能應該以(aaa)作為基礎開始然后隨着'a'和'b'的下一個“對”進一步擴展,但我不知道如何使其擴展像“(aaa)aaabbb”而不是像“( AAA)ABABAB”。

使用有限狀態自動機最容易表示基於計數的正則表達式問題,並將其減少為單個模式。

有三個節點,每個模塊值一個; 將a轉換定義為處理ab時模塊化值的變化。

然后通過單個轉換替換節點中的每個路徑來折疊一個節點。

  • 0->2->00->0ba
  • 0->2->10->1bb
  • 1->2->01->0aa
  • 1->2->11->1ab

重復另一個節點。

  • 0->1(->1)*->00->0(a|bb)(ab)*(b|aa)

最終的模式是: (ba|(a|bb)(ab)*(b|aa))*

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM