2010-10-19 52 views
1

我需要以特定的格式獲取部分字符串。嘗試 從分裂,子串到模式和匹配器的一切。但每次 它都會失敗,並具有其中一項要求。想如何使用標準java api從字符串中獲得所需的序列?

假設

str = (((abc) shdj (def) iueexs (ghi)) mkek ONE(tree23) bjm 
(twooo(bug OR bag)) mvnj THR-EE(<*>$##)) 

和術語:

"Hard Coded Term1":abc 
"Hard Coded Term2":def 
"Hard Coded Term3":ghi 
ONE:tree23 
twooo:bug,bag 
THR-EE:<*>$## 

提供硬編碼的條款在前三的情況下。 幫助!幫助!

+3

我不知道你要找的「特定格式」是什麼。我沒有在你想要的輸出中看到一個模式。你可以編輯你的問題,澄清哪些條款應該挑選出來嗎? – Pops 2010-10-19 16:23:48

回答

1

你是在做語言解析的附近。只是看着它,它看起來可以用recursive descent parser進行操作,但用這個簡短的例子很難說清楚。

這個棘手的想法看起來有區別shdj (def)這應該返回從「ONE(tree23)」應該返回「ONE:tree23」的「硬編碼術語」def「」。

1

呃,您需要先正確指定您的要求,最好是BNF或同等學歷。除此之外,您可以通過正則表達式(^|[(])[(]([^)])[)](使用第二組)找到硬編碼術語,其他術語使用像([0-9a-zA-Z-_])[(]([^)])[)]這樣的正則表達式(使用第一組作爲名稱,第二組作爲值,但是您需要進一步處理第二組在操作數上分割)。

相關問題