[
https://jira.jboss.org/browse/JBRULES-2745?page=com.atlassian.jira.plugin...
]
Tihomir Surdilovic resolved JBRULES-2745.
-----------------------------------------
Fix Version/s: 5.2.0.M1
Resolution: Done
With this change, using complex types or simple types by default you still have to escape
the matching pattern, for example:
when
$task : BinTask( $bn : bin.name matches "\\w\\w\\d{3}\\w\\w" )
$bin : Bin( $nm : name matches "\\w\\w\\d{3}\\w\\w" )
then
...
If you set the drools.parser.processStringEscapes option:
KnowledgeBuilderConfiguration kbconf =
KnowledgeBuilderFactory.newKnowledgeBuilderConfiguration();
kbconf.setProperty("drools.parser.processStringEscapes", "false");
KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(kbconf);
...
the matches patterns do not have to be escaped, and the patterns can be:
when
$task : BinTask( $bn : bin.name matches "\w\w\d{3}\w\w" )
$bin : Bin( $nm : name matches "\w\w\d{3}\w\w" )
then
...
Problems in the use of escapes in the "matches" operator
--------------------------------------------------------
Key: JBRULES-2745
URL:
https://jira.jboss.org/browse/JBRULES-2745
Project: Drools
Issue Type: Bug
Security Level: Public(Everyone can see)
Affects Versions: 5.1.1.FINAL
Reporter: Alessandro Lazarotti
Assignee: Tihomir Surdilovic
Fix For: 5.2.0.M1
Attachments: drools-simple-regex.zip
According to official documentation, it is not necessary to use escapes:
"In contrast to Java, escapes are not needed within regular expressions written as
string literals." (a note in topic 4.8.2.1.5.)
But it is not true. Actually even the example of the documentation does not work if you
do not use escape:
//type is a String
Cheese( type matches "(Buffalo)?\S*Mozarella" )
... should be changed to:
//type is a String
Cheese( type matches "(Buffalo)?\\S*Mozarella" )
Curiously, if you have a attribute of the attribute which matches a regex, you
shouldn't use escapes:
//type is "complex type" and value is a String
Cheese( type.value matches "(Buffalo)?\S*Mozarella" )
... it's work!
That said, a workaround to work with simple String attributes, you should use
"toString":
//type is "String"
Cheese( type.toString matches "(Buffalo)?\S*Mozarella")
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
https://jira.jboss.org/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira