我有兴趣使用正则表达式解析Drools规则文件。 有与整个.drl文件的内容的字符串,我想有4子:用Java正则表达式解析Drools规则文件
- 与
<name>
- 的子字符串的内容与
<attribute>
- A的含量子串子与
<conditional element>
- 的子字符串的内容与内容
<action>
一个Drools的规则有后续荷兰国际集团的结构,根据official documentation:
rule "<name>"
<attribute>*
when
<conditional element>*
then
<action>*
end
我已经使用这种模式尝试,但目前还没有行之有效:
^rule"(.|\n|\r|\t)+"(.|\n|\r|\t)+\bwhen\b(.|\n|\r|\t)+\bthen\b(.|\n|\r|\t)+\bend\b?$
没有人有我怎么可能进行的想法?
'.' can匹配行分隔符以外的任何内容。如果你想让'.'来匹配它们,而不是'。\ n | \ r | \ t'来简单的使用'.',那么'Pattern.DOTALL'标志就会添加到你的正则表达式中。另外''但它运作不好'并不是描述你面对这个正则表达式问题的最好方法。你能解释你如何使用这个正则表达式,你的输入,输出和预期输出是什么?我怀疑'(。| \ n | \ r | \ t)+'是贪婪的问题,可以匹配任何东西。 – Pshemo
我会考虑看看javacc的任何类型的复杂解析。 –