<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Perl Regular Expression in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Perl-Regular-Expression/m-p/226004#M40626</link>
    <description>&lt;P&gt;Hi FriedEgg&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Thanks a bunch.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I reduced my code &lt;img id="smileyhappy" class="emoticon emoticon-smileyhappy" src="https://communities.sas.com/i/smilies/16x16_smiley-happy.png" alt="Smiley Happy" title="Smiley Happy" /&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Could you explain two things&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;What is the role of ( )? becuase i misplaced in my code&lt;/LI&gt;
&lt;LI&gt;I know ? is zero or one time. what is the meaning of ?=&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Thanks in advance.&lt;/P&gt;
&lt;P&gt;Rajaram&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Thu, 17 Sep 2015 09:24:41 GMT</pubDate>
    <dc:creator>Rajaram</dc:creator>
    <dc:date>2015-09-17T09:24:41Z</dc:date>
    <item>
      <title>Perl Regular Expression</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Perl-Regular-Expression/m-p/225846#M40587</link>
      <description>&lt;P&gt;I am working on some RTF code generation. I am using following code that is working fine but i am not well in PRX functions.&lt;/P&gt;
&lt;P&gt;Is there any way to simplyfy my code?&lt;/P&gt;
&lt;P&gt;Code:&lt;/P&gt;
&lt;PRE class="lang-perl prettyprint prettyprinted"&gt;&lt;CODE&gt;&lt;SPAN class="pln"&gt;data _null_&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;;&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;
   length tmptxt $100&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;.;&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;
   tmptxt&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;=&lt;/SPAN&gt;&lt;SPAN class="str"&gt;"a\b Refer $crossref(Table 1) and $italic.Section $crossref(3.1)$enditalic"&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;;&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;
   tmptxt&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;=&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;prxchange&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="str"&gt;'s/([\\{}])/\\$1/'&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,-&lt;/SPAN&gt;&lt;SPAN class="lit"&gt;1&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;tmptxt&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;);&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;
   tmptxt&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;=&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; prxchange&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="str"&gt;'s/([\$][a-zA-Z]+)([\(])/%$1$2/'&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,-&lt;/SPAN&gt;&lt;SPAN class="lit"&gt;1&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;tmptxt&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;);&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;
   tmptxt&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;=&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;prxchange&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="str"&gt;'s/%\$/%/'&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,-&lt;/SPAN&gt;&lt;SPAN class="lit"&gt;1&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;tmptxt&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;);&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;
   tmptxt&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;=&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;prxchange&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="str"&gt;'s/([\$][a-zA-Z]+)/&amp;amp;$1$2/'&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,-&lt;/SPAN&gt;&lt;SPAN class="lit"&gt;1&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;tmptxt&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;);&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;
   tmptxt&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;=&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;prxchange&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="str"&gt;'s/&amp;amp;\$/&amp;amp;/'&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,-&lt;/SPAN&gt;&lt;SPAN class="lit"&gt;1&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;tmptxt&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;);&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;
   put tmptxt&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;;&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;
run&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Thanks in advance&lt;/P&gt;</description>
      <pubDate>Wed, 16 Sep 2015 14:39:59 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Perl-Regular-Expression/m-p/225846#M40587</guid>
      <dc:creator>Rajaram</dc:creator>
      <dc:date>2015-09-16T14:39:59Z</dc:date>
    </item>
    <item>
      <title>Re: Perl Regular Expression</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Perl-Regular-Expression/m-p/225888#M40595</link>
      <description>&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;You can reduce the number of PRXCHANGE functions by collapsing the two-step changes you are making for $-&amp;gt;% and $-&amp;gt;&amp;amp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;&lt;BR /&gt;data _null_;
   length tmptxt $100.;
   tmptxt="a\b Refer $crossref(Table 1) and $italic.Section $crossref(3.1)$enditalic";
   tmptxt=prxchange('s/([\\{}])/\\$1/',-1,tmptxt);
   /*
      tmptxt=prxchange('s/([\$][a-zA-Z]+)([\(])/%$1$2/',-1,tmptxt);
      tmptxt=prxchange('s/%\$/%/',-1,tmptxt);
   */
   tmptxt=prxchange('s#[\$]([a-z]+)(?=\()#%$1#i',-1,tmptxt);
   /*
      tmptxt=prxchange('s/([\$][a-zA-Z]+)/&amp;amp;$1$2/',-1,tmptxt);
      tmptxt=prxchange('s/&amp;amp;\$/&amp;amp;/',-1,tmptxt);
   */
   tmptxt=prxchange('s#[\$]([a-z]+)#&amp;amp;$1#i',-1,tmptxt);
   put tmptxt;
run;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;With comments removed:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data _null_;
   length tmptxt $100.;
   tmptxt="a\b Refer $crossref(Table 1) and $italic.Section $crossref(3.1)$enditalic";
   tmptxt=prxchange('s/([\\{}])/\\$1/',-1,tmptxt);
   tmptxt=prxchange('s#[\$]([a-z]+)(?=\()#%$1#i',-1,tmptxt);
   tmptxt=prxchange('s#[\$]([a-z]+)#&amp;amp;$1#i',-1,tmptxt);
   put tmptxt;
run;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 16 Sep 2015 16:47:10 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Perl-Regular-Expression/m-p/225888#M40595</guid>
      <dc:creator>FriedEgg</dc:creator>
      <dc:date>2015-09-16T16:47:10Z</dc:date>
    </item>
    <item>
      <title>Re: Perl Regular Expression</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Perl-Regular-Expression/m-p/225899#M40601</link>
      <description>&lt;P&gt;I could help you to understand what the prxchange function is doing, as you are aware the prxchange function is used to replace the captured text and replace with another text or make it blank. Here are explanations of what the prxchange function is trying to do. prxchange is best for these kind of replacements.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE class=" prettyprint prettyprinted language-perl"&gt;&lt;CODE class=" language-perl"&gt;&lt;SPAN class="pln"&gt;prxchange&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="str"&gt;'s/([\\{}])/\\$1/'&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,-&lt;/SPAN&gt;&lt;SPAN class="lit"&gt;1&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;tmptxt&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;);&lt;/SPAN&gt;&lt;/CODE&gt; /* trying to locate any one of \\{} and replace with &lt;BR /&gt;blank*/&lt;/PRE&gt;&lt;PRE class=" prettyprint prettyprinted language-perl"&gt;&lt;CODE class=" language-perl"&gt;&lt;SPAN class="pln"&gt;prxchange&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="str"&gt;'s/([\$][a-zA-Z]+)([\(])/%$1$2/'&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,-&lt;/SPAN&gt;&lt;SPAN class="lit"&gt;1&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;tmptxt&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;);&lt;/SPAN&gt;&lt;/CODE&gt; /* Trying to locate to capture buffers&lt;BR /&gt;first capture for $ followed by any alphabet followed by + and second capture bufferfor \( &lt;BR /&gt;and replace them with %*/&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE class=" prettyprint prettyprinted language-perl"&gt;&lt;CODE class=" language-perl"&gt;&lt;SPAN class="pln"&gt;prxchange&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="str"&gt;'s/%\$/%/'&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,-&lt;/SPAN&gt;&lt;SPAN class="lit"&gt;1&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;tmptxt&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;);&lt;/SPAN&gt;&lt;/CODE&gt; /*&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE class=" prettyprint prettyprinted language-perl"&gt;&lt;CODE class=" language-perl"&gt;&lt;SPAN class="pln"&gt;prxchange&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="str"&gt;'s/%\$/%/'&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,-&lt;/SPAN&gt;&lt;SPAN class="lit"&gt;1&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;tmptxt&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;);&lt;/SPAN&gt;&lt;/CODE&gt;/* trying to locate % followed by $ and when found this will be &lt;BR /&gt;replaced with %*/ &lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE class=" prettyprint prettyprinted language-perl"&gt;&lt;CODE class=" language-perl"&gt;&lt;SPAN class="pln"&gt;prxchange&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="str"&gt;'s/([\$][a-zA-Z]+)/&amp;amp;$1$2/'&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,-&lt;/SPAN&gt;&lt;SPAN class="lit"&gt;1&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;tmptxt&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;);&lt;/SPAN&gt;&lt;/CODE&gt; /* Trying to locate a text with $ followed by &lt;BR /&gt;any small or capital letter alphabet followed by + , then this whole text is when identified &lt;BR /&gt;will be replaced with &amp;amp;*/&lt;/PRE&gt;&lt;PRE class=" prettyprint prettyprinted language-perl"&gt;&lt;CODE class=" language-perl"&gt;&lt;SPAN class="pln"&gt;&lt;BR /&gt;&lt;BR /&gt;prxchange&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="str"&gt;'s/&amp;amp;\$/&amp;amp;/'&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,-&lt;/SPAN&gt;&lt;SPAN class="lit"&gt;1&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;tmptxt&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;);&lt;/SPAN&gt;&lt;/CODE&gt; /* trying to locate the special character like &amp;amp; $ and &lt;BR /&gt;replace with &amp;amp;*/&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks,&lt;/P&gt;&lt;P&gt;Jag&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 16 Sep 2015 17:33:56 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Perl-Regular-Expression/m-p/225899#M40601</guid>
      <dc:creator>Jagadishkatam</dc:creator>
      <dc:date>2015-09-16T17:33:56Z</dc:date>
    </item>
    <item>
      <title>Re: Perl Regular Expression</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Perl-Regular-Expression/m-p/226004#M40626</link>
      <description>&lt;P&gt;Hi FriedEgg&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Thanks a bunch.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I reduced my code &lt;img id="smileyhappy" class="emoticon emoticon-smileyhappy" src="https://communities.sas.com/i/smilies/16x16_smiley-happy.png" alt="Smiley Happy" title="Smiley Happy" /&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Could you explain two things&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;What is the role of ( )? becuase i misplaced in my code&lt;/LI&gt;
&lt;LI&gt;I know ? is zero or one time. what is the meaning of ?=&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Thanks in advance.&lt;/P&gt;
&lt;P&gt;Rajaram&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 17 Sep 2015 09:24:41 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Perl-Regular-Expression/m-p/226004#M40626</guid>
      <dc:creator>Rajaram</dc:creator>
      <dc:date>2015-09-17T09:24:41Z</dc:date>
    </item>
    <item>
      <title>Re: Perl Regular Expression</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Perl-Regular-Expression/m-p/226097#M40662</link>
      <description>&lt;P&gt;This is a non-capturing group that performs a positive look-ahead assertion.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;[\$]([a-z]+)(?=\()

Options: case insensitive; ^ and $ match at line breaks

Match a $ character «[\$]»
Match the regular expression below and capture its match into backreference number 1 «([a-z]+)»
   Match a single character in the range between “a” and “z” «[a-z]+»
      Between one and unlimited times, as many times as possible, giving back as needed (greedy) «+»
Assert that the regex below can be matched, starting at this position (positive lookahead) «(?=\()»
   Match the character “(” literally «\(»&lt;/PRE&gt;</description>
      <pubDate>Thu, 17 Sep 2015 17:14:58 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Perl-Regular-Expression/m-p/226097#M40662</guid>
      <dc:creator>FriedEgg</dc:creator>
      <dc:date>2015-09-17T17:14:58Z</dc:date>
    </item>
  </channel>
</rss>

