比方說,我有一個字符串,我想檢查它是否與任何可能(隨機)順序中的另一個字符串匹配。舉例來說,假設我有一個字符串s
,我要檢查它是否以隨機順序一致"ONE"
(==下列之一:ENO|EON|NEO|NOE|OEN|ONE
,但不是EEE;EEN;EEO;
等)正則表達式與任何隨機順序中的字符完全匹配,沒有重複的字符
在更一般的描述:我正在尋找一個正則表達式,以隨機順序匹配字符串,只有該字符串的給定字符(這意味着字符串本身可以包含重複字符,如SEVEN
,但應該在隨機匹配中恰好使用兩個E
,而不多或少)。
我知道我可以使用文字ENO|EON|NEO|NOE|OEN|ONE
匹配ONE
,與同爲TWO
通過NINE
,但這是太長..
我也知道我可以匹配的一切,包括像這樣[ONE]{3}
重複的字符,但隨後它也會錯誤地匹配EEE
,EEN
等。
我知道我也可以創建一個循環來生成所有這些不同的排列,並將它們與|
分隔符一起附加在一起。我認爲這也可能是這種情況下的有效解決方案。但如果這是可能的正則表達式我想知道以及我自己的知識。哦,即使它是循環的,我也不希望它太長(因爲我實際上是因爲代碼高爾夫的挑戰,你在哪裏以儘可能少的字節解決某個挑戰)。
我不認爲有一個簡單的方法與「正常」的正則表達式來做到這一點 - 聽起來像是你需要PERFO RM模糊匹配,這AFAIK沒有一個標準的正則表達式引擎的支持 – UnholySheep
什麼是錯的只是在做類似'因爲如果(計數(C,「ONE」)!=計數(C,STR)(字符在「ONE」 C)返回false;'?這樣,你不必爲每個單詞都寫一個正則表達式。 (也,這基本上是一個更有效的版本,什麼樣的正則表達式將編譯也是閒着) – Tezra
@Tezra這的確是一個不錯的選擇也是如此。儘管在這種情況下優先使用正則表達式,但由於我忘記了在問題中提到的內容。它應該匹配完整的String的一部分。所以一個字符串可能是這樣的:''ENOWOT「',它應該返回'」12「'。我沒有提到這一點,因爲我的頭腦中已經有了一個解決策略,這需要像_Casimir和Hippolyte_提供的正則表達式。 [這裏是Codegolf挑戰順便說一句,如果誰不知道我想要什麼來實現的。(https://codegolf.stackexchange.com/questions/131852/the-original-number) –