我需要以特定格式获取字符串的一部分。试着 从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:<*>$##
提供硬编码条款,如前三个案例。 救命!救命!
答案 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,但是你需要进一步处理第二组以拆分操作数。)