As can be frequently seen on this list (as well as on others) the lack of precision in the original definition of the transformation is striking.<br><br>Now that we know that S -&gt; VOL and SF -&gt; S must be done in parallel, and that arbitrary combinations of the input strings need to be handled, we still don&#39;t know what should become of<br>
   SFFF<br>Application of the second rule produces<br>   SFF<br>and, by repeated application of the same rule, we finally obtain<br>   S<br>Is this as it should be? Or is every input string to be replaced exactly once, and inserted strings do not trigger another match?<br>
<br>The complete definition of the patterns to be replaced is<br>   S(?!F)  =&gt;  VOL<br>   SF       =&gt; S<br>and we&#39;d need a yes or no regarding the question raised in the first paragraph.<br><br>A simple rule would look for strings containing an &#39;S&#39;, using no-loop, and modifying the string (on the right hand side) by an application of replaceAll for &quot;S(?!F)&quot;  to &quot;VOL&quot;, followed by another one, replacing all &quot;SF&quot; by &quot;S&quot;, called repeatedly or not.<br>
<br>IMHO, there&#39;s no gain in trying to conceive elaborate rule combinations for simple algorithms.<br><br>-W<br><br><div class="gmail_quote">On 24 November 2011 09:11, FrankVhh <span dir="ltr">&lt;<a href="mailto:frank.vanhoenshoven@agserv.eu">frank.vanhoenshoven@agserv.eu</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">I am sorry, but that would not work either. The first rule would not catch<br>
those sentences that have both S and SF in them.<br>
<br>
You will have to work in three steps and use an intermediate value.<br>
<br>
1. Change SF to Q<br>
2. Change S to VOL<br>
3. Change Q to S<br>
<br>
Separate your steps by using ruleflow or agenda-groups. Make sure to update<br>
your WM after every change.<br>
<br>
Sorry for the confusion.<br>
<br>
Regards,<br>
Frank<br>
<br>
<br>
FrankVhh wrote<br>
&gt;<br>
&gt; Hi,<br>
&gt;<br>
&gt; Sorry, but I fogot about you :-(.<br>
&gt;<br>
&gt; It does not work because both wolfgang and I did get your question wrong.<br>
&gt;<br>
&gt; If I were you, I would try to work from the opposite direction and check<br>
&gt; whether a String matches S but not SF. Than replace that S by VOL.<br>
&gt;<br>
&gt; A second rule could than safely check for SF and replace that by S.<br>
&gt;<br>
&gt; In short, reverse your salience, check that S is not SF and make sure that<br>
&gt; you replace the right S in the RHS of your rules. You do not want to<br>
&gt; update the WM.<br>
&gt;<br>
&gt; Regards,<br>
&gt; Frank<br>
&gt;<br>
&gt;<br>
&gt; fiitkar wrote<br>
&gt;&gt;<br>
&gt;&gt; Sorry, it does not work.<br>
&gt;&gt; For input SF I allways get VOLVOLFVOL.<br>
&gt;&gt;<br>
&gt;&gt; Once again: if the input is S the output should be VOL. But if the input<br>
&gt;&gt; string contains SF the output should be S and not VOL.<br>
&gt;&gt;<br>
&gt;&gt; For example:<br>
&gt;&gt; SF --&gt; S<br>
&gt;&gt; SSF --&gt; VOLS<br>
&gt;&gt; SFSF -&gt; SS<br>
&gt;&gt; etc.<br>
&gt;&gt;<br>
&gt;<br>
<font color="#888888"><br>
<br>
--<br>
View this message in context: <a href="http://drools.46999.n3.nabble.com/string-replace-collision-problem-tp3518826p3533054.html" target="_blank">http://drools.46999.n3.nabble.com/string-replace-collision-problem-tp3518826p3533054.html</a><br>

Sent from the Drools: User forum mailing list archive at Nabble.com.<br>
_______________________________________________<br>
rules-users mailing list<br>
<a href="mailto:rules-users@lists.jboss.org">rules-users@lists.jboss.org</a><br>
<a href="https://lists.jboss.org/mailman/listinfo/rules-users" target="_blank">https://lists.jboss.org/mailman/listinfo/rules-users</a><br>
</font></blockquote></div><br>