如何使用标准java api从字符串派生所需的序列?

时间:2010-10-19 16:12:48

标签: java

我需要以特定格式获取字符串的一部分。试着 从split,substring到pattern和matcher的所有内容。但每一次 它失败了,其中一个要求。

假设

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:<*>$##

提供硬编码条款,如前三个案例。 救命!救命!

2 个答案:

答案 0 :(得分:1)

你正在进行语言分析。只是看着它,它看起来可以用recursive descent parser,但有一个简短的例子,很难说清楚。

这个棘手的想法看起来要区分shdj (def)哪个应该来自ONE(tree23)的“硬编码术语'def'”,它应该返回“ONE:tree23”。

答案 1 :(得分:1)

呃,你需要首先正确地指明你的要求,最好用BNF或同等的。通过这种方式,您可以通过正则表达式(^|[( ])[(]([^ )])[)](使用第2组)找到硬编码的术语,使用像([0-9a-zA-Z-_])[(]([^ )])[)]这样的正则表达式找到其他术语(使用第1组作为名称,第2组) group as value,但是你需要进一步处理第二组以拆分操作数。)