有沒有辦法查看一個字符串是否可以用幾個字符擴展來匹配某些給定的正則表達式?我可以使用Regex類嗎?我GOOGLE了一段時間,似乎我應該寫我自己的正則表達式解析器...正則表達式部分匹配
像亞歷克斯說:如果模式爲abc
字符串ab
將符合我的標準和串def
或bc
止跌」噸。我希望這適用於編譯時未知的任何正則表達式。
有沒有辦法查看一個字符串是否可以用幾個字符擴展來匹配某些給定的正則表達式?我可以使用Regex類嗎?我GOOGLE了一段時間,似乎我應該寫我自己的正則表達式解析器...正則表達式部分匹配
像亞歷克斯說:如果模式爲abc
字符串ab
將符合我的標準和串def
或bc
止跌」噸。我希望這適用於編譯時未知的任何正則表達式。
正則表達式被編譯成決策樹,允許決定在O(n)時間內輸入長度爲n的匹配。您的自定義RE解析器可以簡單地計數直到失敗的決策數量,當與匹配所需的步驟數相比較時,它將指示參數對RE的「親密度」。假設你使用的是相當簡單的RE,並且「擴展」意味着在字符串的末尾添加字符,這在計算上是可行的。
我相信你需要編寫你自己的Regex解析器。它需要能夠採取任意的正則表達式並將其分解爲元素。例如,它需要採取/abc/
並返回{ /abc/, /ab/, /a/ }
並檢查輸入是否與其中的任何匹配。
雖然對於像/abc/
這樣的簡單表達式來說這可能並不算太壞,但對於更復雜的表達式,如(?<=s)t
,它們將變得更加繁重,這些表達式看起來很倒黴。
謝謝你的答案,對於非常簡單的正則表達式,這種方法足夠好了 – Natalia
你能發表一個你想要完成的例子嗎? –
你有沒有想要實現的例子? –
我認爲所要求的是查看需要什麼字符來獲得比賽。例如。 「abc」是模式,「ab」被提供。所述函數的結果是「c」。但是,該模式必須非常明確,才能做到這一點。 – Alex