2016-11-24 287 views
0

我的字符串長度不能超過255個字符。 以下正則表達式可以我使用exrex.getone(規則運算)函數用於生成其中我無法控制生成的字符串長度的字符串應採取的示例 -Python - 從正則表達式中生成指定長度的隨機字符串

^([a-zA-Z0-9]{1}((-|[a-zA-Z0-9])*[a-zA-Z0-9])*[.])*[a-zA-Z]{1}((-|[a-zA-Z0-9])*[a-zA-Z0-9])*\.?$ 


如何生成滿足正則表達式的預期長度的字符串?
直到現在我還沒有看到任何滿足此條件的答案。

+1

可能的重複[在Python中反轉正則表達式](http://stackoverflow.com/questions/492716/reversing-a-regular-expression-in-python) – shadow0359

+0

@ shadow0359我已經在這裏檢查了答案(在Python中反轉正則表達式),但它不符合上述條件。所以你可以請刪除它作爲重複。謝謝。 – MadhuSudan

+1

exrex是否支持斷言,所以你可以用'^(?=。{0,255} $)...'作爲前綴的正則表達式? –

回答

0

exrex網站:

有無窮匹配串的正則表達式(例如:[A-Z] +),在這些情況下exrex限制的無限部分的最大長度。

和代碼本身:

418 def getone(regex_string, limit=20): 
419  """Returns a random matching string to a given regular expression 
420  """ 
421  return _randone(parse(regex_string), limit) 

所以這是一個限制關鍵字。我無法確定這是否限制了整個弦或每個無限的部分,但我認爲它是後者。嘗試限制此更小的東西,如4.

+0

感謝您的好消息,但我真的很驚訝,對於正則表達式^ sip:\ S + $ exrex正在生成字符串_sip:_這是錯誤的。我知道這與目前的問題沒有關係,只是問。你可以請這裏幫忙。有可能像exrex()這樣的函數推薦用於正則表達式可能會產生無效的string.thanks。 – MadhuSudan

+0

您寫的正則表達式意味着:從行的開頭寫入「sip:」,然後寫入none-spaces直到結束。我檢查過,exrex可能不支持常用字符集的'not'版本,所以'\ S'可能確實不起作用。使用[^ \ s]替代 - 爲我工作。 – kabanus

+0

你的意思是**^\ sip:\ S + $ **但這對我沒有效用。你能分享一下,你使用哪個正則表達式? 你能分享任何支持這些類型的正則表達式的正則表達式生成器嗎? 實際上,在我的腳本中,我只能從100個正則表達式中生成字符串,所以我無法手動編輯它們。我必須從這些正則表達式中使用一些字符串生成器,在這種情況下可以正常工作。 非常感謝。 – MadhuSudan

相關問題