我正在開發一個項目,用戶輸入一個帶有 AND OR運算符的人類可讀搜索字符串。 我給三個例子將用戶輸入轉換爲正則表達式
- 一個AND(B或C) - >(= \ BA \ B')(=(\ BB \ b)中|?(\ BC \ B))。 *
- A或(b和C)
- (A或b)和(c或d)
以上是輸入我可能得到的樣品。 我想要輸入並將其轉換爲正則表達式。 這不是編譯器的示例嗎?看看它,我看到 ,我想要做的是將高級命令 轉換爲低級別命令。你對 有什麼建議,我怎麼能完成上述?我想要的是,將正在生成的 正則表達式傳遞給jsoup(僞選擇器:matchesOwn) 並查詢html文檔。 謝謝你的幫助。
如果你有嵌套括號像這樣'(()())((())())',你不能在Java正則表達式解析它。 – nhahtdh 2013-03-16 11:55:04
謝謝你的迴應。我不想用正則表達式解析輸入,我想將它轉換爲正則表達式。我不問用戶給我的正則表達式,而是問他一個更可讀的版本。 – alkis 2013-03-16 12:00:02
你將如何處理這樣的事實,即正則表達式有順序,但搜索字符串沒有。如果用戶輸入'foo AND bar',他們希望'bar foo'與您的示例不符。或者你會產生每一個排列。 – user1937198 2013-03-16 12:05:22