2010-10-19 23 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-_])[(]([^)])[)]这样的正则表达式(使用第一组作为名称,第二组作为值,但是您需要进一步处理第二组在操作数上分割)。

相关问题