2011-09-22 24 views
-2

有沒有辦法獲取模式符號集?模式符號的字符集

例如,我有一個正則表達式[az]+[A-Z]*。然後第一個符號的符號集是az。然後第二個符號的符號集是az。然後第三個符號的符號集是az。 ...

任務是:我有一個模式和一個字符串。現在我想知道該字符串是否以與該模式匹配的字符串中的一個字符開始。

UPDATE:

例如,我有一個正則表達式[az]\\:[A-Z]*。然後第一個符號的符號集是az。然後第二個符號的符號集是:。然後第三個符號的符號集是A-Z。然後第四個符號的符號集是A-Z。 ....

+0

什麼是功能要求?你的問題並不完全清楚。你想不區分大小寫的匹配嗎? – BalusC

+0

什麼是功能要求?什麼功能?你想不區分大小寫的匹配嗎?是的 – itun

+0

即使是一些想要的輸入和輸出的例子可能會幫助我們把它拼湊在一起。 :-) – corsiKa

回答

0

這聽起來像你所要求的,需要一個正則表達式作爲參數,並返回一組可以匹配在給定的偏移量字符串中的字符待匹配功能:

Set<Character> getSymbols(String regEx, int offset); 

這是非平凡的。使用

你的例子:

getSymbols("[az]\\:[A-Z]*", 1) 

應該返回[ 'A', 'Z'],

getSymbols("[az]\\:[A-Z]*", 2) 

應該返回[ ':'],

getSymbols("[az]\\:[A-Z]*", 3) 

應返回['A','B','C',.....'Y','Z']

但這是一個簡單的輸入。如果輸入的是:

getSymbols("[abc]*FRED[xzy]*", 5) 

現在你有一個事實是,任何數量的「ABC」的字符可以進行FRED,並會轉移一切,導致設置這樣的結果因素:

1: ['a', 'b', 'c', 'F'] 
2: ['a', 'b', 'c', 'F', 'R'] 
3: ['a', 'b', 'c', 'F', 'R', 'E'] 
4: ['a', 'b', 'c', 'F', 'R', 'E', 'D'] 
5: ['a', 'b', 'c', 'x', 'y', 'z', 'F', 'R', 'E', 'D'] 

解決這個問題的代碼必須解析正則表達式,這些正則表達式對所有轉義字符(\ w for whitespace等等)有很強的表達力,然後需要一個遞歸算法來構建輸出集。

如果這是你的意圖,接下來的問題是,「你真的想要解決什麼問題?」

+0

Set getSymbols(String regEx,int offset);什麼類或庫包含此功能? – itun