<?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 split value in different variables based on brackets in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/split-value-in-different-variables-based-on-brackets/m-p/547293#M151632</link>
    <description>&lt;P&gt;Dear all,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;when I find all strings between (),[],and {} (such as &amp;lt;BR&amp;gt;, [FONT],{BODY},'A',"JUICE") and split them in a new variable&lt;/P&gt;&lt;P&gt;(for example, for the&amp;nbsp;'JUICE&amp;lt;BR&amp;gt;apple&amp;lt;footer&amp;gt;',I expect to add a blank between 'JUICE' and 'apple')&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;However,&amp;nbsp;&lt;/P&gt;&lt;P&gt;the value&lt;/P&gt;&lt;PRE class=" language-sas"&gt;&lt;CODE class="  language-sas"&gt;HARDY&lt;SPAN class="token punctuation"&gt;(&lt;/SPAN&gt;FRNS&lt;SPAN class="token punctuation"&gt;.&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;)&lt;/SPAN&gt;&lt;SPAN class="token string"&gt;'A'&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;cannot be processed&amp;nbsp;by the code&amp;nbsp;&lt;/P&gt;&lt;P&gt;I expect to get&amp;nbsp;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;name&lt;/TD&gt;&lt;TD&gt;COMPANY_NAME_inB&lt;/TD&gt;&lt;TD&gt;COMPANY_NAME_noB&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;HARDY(FRNS.)'A'&lt;/TD&gt;&lt;TD&gt;FRNS.&lt;/TD&gt;&lt;TD&gt;HARDY&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;HARDY(FRNS.)'A'&lt;/TD&gt;&lt;TD&gt;A&lt;/TD&gt;&lt;TD&gt;HARDY&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;However, I only get&amp;nbsp;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;name&lt;/TD&gt;&lt;TD&gt;COMPANY_NAME_inB&lt;/TD&gt;&lt;TD&gt;COMPANY_NAME_noB&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;HARDY(FRNS.)'A'&lt;/TD&gt;&lt;TD&gt;A&lt;/TD&gt;&lt;TD&gt;HARDY(FRNS.)&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Could you please give me some suggestions?&lt;/P&gt;&lt;P&gt;&lt;CODE class=" language-sas"&gt;&lt;/CODE&gt;&lt;/P&gt;&lt;P&gt;&lt;CODE class=" language-sas"&gt;&lt;/CODE&gt;&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have ;
  infile datalines truncover;
  input name $100.;
  datalines;
JUICE&amp;lt;BR&amp;gt;apple[footer] 
juice &amp;lt;BR&amp;gt; apple 
juice&amp;lt;BODY&amp;gt; 'apple'
&amp;lt;figure&amp;gt; "juice" LTD
HARDY(FRNS.)'A'
HAFSLUND 'B' (XSQ)
;

data want;
   set have;
   RegExID = prxparse('/&amp;lt;\w*&amp;gt;|\(\w*\)|\[\w*\]|\(\w*\)|"\w*"|''\w*''/');
   start=1;
   stop=length(name);
   call prxnext(RegExID, start, stop, name, pos, length);
    do while (pos &amp;gt; 0);
         COMPANY_NAME_inB = substr(name, pos+1, length-2);
         COMPANY_NAME_noB = prxchange('s/&amp;lt;\w*&amp;gt;|\(\w*\)|\[\w*\]|\(\w*\)|"\w*"|''\w*''/ /', -1, name);
		 output;
         call prxnext(RegExID, start, stop, name, pos, length);
      end;
	  drop RegExID pos length start stop;
run;


proc print data=want;
run;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Fri, 29 Mar 2019 18:29:20 GMT</pubDate>
    <dc:creator>Alexxxxxxx</dc:creator>
    <dc:date>2019-03-29T18:29:20Z</dc:date>
    <item>
      <title>split value in different variables based on brackets</title>
      <link>https://communities.sas.com/t5/SAS-Programming/split-value-in-different-variables-based-on-brackets/m-p/547293#M151632</link>
      <description>&lt;P&gt;Dear all,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;when I find all strings between (),[],and {} (such as &amp;lt;BR&amp;gt;, [FONT],{BODY},'A',"JUICE") and split them in a new variable&lt;/P&gt;&lt;P&gt;(for example, for the&amp;nbsp;'JUICE&amp;lt;BR&amp;gt;apple&amp;lt;footer&amp;gt;',I expect to add a blank between 'JUICE' and 'apple')&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;However,&amp;nbsp;&lt;/P&gt;&lt;P&gt;the value&lt;/P&gt;&lt;PRE class=" language-sas"&gt;&lt;CODE class="  language-sas"&gt;HARDY&lt;SPAN class="token punctuation"&gt;(&lt;/SPAN&gt;FRNS&lt;SPAN class="token punctuation"&gt;.&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;)&lt;/SPAN&gt;&lt;SPAN class="token string"&gt;'A'&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;cannot be processed&amp;nbsp;by the code&amp;nbsp;&lt;/P&gt;&lt;P&gt;I expect to get&amp;nbsp;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;name&lt;/TD&gt;&lt;TD&gt;COMPANY_NAME_inB&lt;/TD&gt;&lt;TD&gt;COMPANY_NAME_noB&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;HARDY(FRNS.)'A'&lt;/TD&gt;&lt;TD&gt;FRNS.&lt;/TD&gt;&lt;TD&gt;HARDY&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;HARDY(FRNS.)'A'&lt;/TD&gt;&lt;TD&gt;A&lt;/TD&gt;&lt;TD&gt;HARDY&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;However, I only get&amp;nbsp;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;name&lt;/TD&gt;&lt;TD&gt;COMPANY_NAME_inB&lt;/TD&gt;&lt;TD&gt;COMPANY_NAME_noB&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;HARDY(FRNS.)'A'&lt;/TD&gt;&lt;TD&gt;A&lt;/TD&gt;&lt;TD&gt;HARDY(FRNS.)&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Could you please give me some suggestions?&lt;/P&gt;&lt;P&gt;&lt;CODE class=" language-sas"&gt;&lt;/CODE&gt;&lt;/P&gt;&lt;P&gt;&lt;CODE class=" language-sas"&gt;&lt;/CODE&gt;&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have ;
  infile datalines truncover;
  input name $100.;
  datalines;
JUICE&amp;lt;BR&amp;gt;apple[footer] 
juice &amp;lt;BR&amp;gt; apple 
juice&amp;lt;BODY&amp;gt; 'apple'
&amp;lt;figure&amp;gt; "juice" LTD
HARDY(FRNS.)'A'
HAFSLUND 'B' (XSQ)
;

data want;
   set have;
   RegExID = prxparse('/&amp;lt;\w*&amp;gt;|\(\w*\)|\[\w*\]|\(\w*\)|"\w*"|''\w*''/');
   start=1;
   stop=length(name);
   call prxnext(RegExID, start, stop, name, pos, length);
    do while (pos &amp;gt; 0);
         COMPANY_NAME_inB = substr(name, pos+1, length-2);
         COMPANY_NAME_noB = prxchange('s/&amp;lt;\w*&amp;gt;|\(\w*\)|\[\w*\]|\(\w*\)|"\w*"|''\w*''/ /', -1, name);
		 output;
         call prxnext(RegExID, start, stop, name, pos, length);
      end;
	  drop RegExID pos length start stop;
run;


proc print data=want;
run;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 29 Mar 2019 18:29:20 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/split-value-in-different-variables-based-on-brackets/m-p/547293#M151632</guid>
      <dc:creator>Alexxxxxxx</dc:creator>
      <dc:date>2019-03-29T18:29:20Z</dc:date>
    </item>
    <item>
      <title>Re: split value in different variables based on brackets</title>
      <link>https://communities.sas.com/t5/SAS-Programming/split-value-in-different-variables-based-on-brackets/m-p/547522#M151735</link>
      <description>&lt;P&gt;Like this?&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data WANT;
  set HAVE;
  RegExID = prxparse('/&amp;lt;[^&amp;gt;]*&amp;gt;|\([^\)]*\)|\[[^\]]*\]|"[^"]*"|''[^'']*''/');
  START=1;
  STOP=length(NAME);
  call prxnext(RegExID, START, STOP, NAME, POS, LENGTH);
  do while (POS &amp;gt; 0);
    COMPANY_NAME_inB = substr(NAME, POS+1, LENGTH-2);
    COMPANY_NAME_noB = prxchange('s/&amp;lt;[^&amp;gt;]*&amp;gt;|\([^\)]*\)|\[[^\]]*\]|"[^"]*"|''[^'']*''/ /', -1, NAME);
    output;                                 
    call prxnext(RegExID, START, STOP, NAME, POS, LENGTH);
  end;
  drop RegExID POS LENGTH START STOP;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;DIV class="branch"&gt;&lt;A name="IDX" target="_blank"&gt;&lt;/A&gt;
&lt;DIV&gt;
&lt;DIV align="center"&gt;
&lt;TABLE class="table" summary="Procedure Print: Data Set WORK.WANT" frame="box" rules="all" cellspacing="0" cellpadding="5"&gt;&lt;COLGROUP&gt; &lt;COL /&gt;&lt;/COLGROUP&gt; &lt;COLGROUP&gt; &lt;COL /&gt; &lt;COL /&gt; &lt;COL /&gt;&lt;/COLGROUP&gt;
&lt;THEAD&gt;
&lt;TR&gt;
&lt;TH class="r header" scope="col"&gt;Obs&lt;/TH&gt;
&lt;TH class="l header" scope="col"&gt;name&lt;/TH&gt;
&lt;TH class="l header" scope="col"&gt;COMPANY_NAME_inB&lt;/TH&gt;
&lt;TH class="l header" scope="col"&gt;COMPANY_NAME_noB&lt;/TH&gt;
&lt;/TR&gt;
&lt;/THEAD&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TH class="r rowheader" scope="row"&gt;1&lt;/TH&gt;
&lt;TD class="l data"&gt;JUICE&amp;lt;BR&amp;gt;apple[footer]&lt;/TD&gt;
&lt;TD class="l data"&gt;BR&lt;/TD&gt;
&lt;TD class="l data"&gt;JUICE apple&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TH class="r rowheader" scope="row"&gt;2&lt;/TH&gt;
&lt;TD class="l data"&gt;JUICE&amp;lt;BR&amp;gt;apple[footer]&lt;/TD&gt;
&lt;TD class="l data"&gt;footer&lt;/TD&gt;
&lt;TD class="l data"&gt;JUICE apple&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TH class="r rowheader" scope="row"&gt;3&lt;/TH&gt;
&lt;TD class="l data"&gt;juice &amp;lt;BR&amp;gt; apple&lt;/TD&gt;
&lt;TD class="l data"&gt;BR&lt;/TD&gt;
&lt;TD class="l data"&gt;juice apple&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TH class="r rowheader" scope="row"&gt;4&lt;/TH&gt;
&lt;TD class="l data"&gt;juice&amp;lt;BODY&amp;gt; 'apple'&lt;/TD&gt;
&lt;TD class="l data"&gt;BODY&lt;/TD&gt;
&lt;TD class="l data"&gt;juice&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TH class="r rowheader" scope="row"&gt;5&lt;/TH&gt;
&lt;TD class="l data"&gt;juice&amp;lt;BODY&amp;gt; 'apple'&lt;/TD&gt;
&lt;TD class="l data"&gt;apple&lt;/TD&gt;
&lt;TD class="l data"&gt;juice&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TH class="r rowheader" scope="row"&gt;6&lt;/TH&gt;
&lt;TD class="l data"&gt;&amp;lt;figure&amp;gt; "juice" LTD&lt;/TD&gt;
&lt;TD class="l data"&gt;figure&lt;/TD&gt;
&lt;TD class="l data"&gt;LTD&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TH class="r rowheader" scope="row"&gt;7&lt;/TH&gt;
&lt;TD class="l data"&gt;&amp;lt;figure&amp;gt; "juice" LTD&lt;/TD&gt;
&lt;TD class="l data"&gt;juice&lt;/TD&gt;
&lt;TD class="l data"&gt;LTD&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TH class="r rowheader" scope="row"&gt;8&lt;/TH&gt;
&lt;TD class="l data"&gt;HARDY(FRNS.)'A'&lt;/TD&gt;
&lt;TD class="l data"&gt;FRNS.&lt;/TD&gt;
&lt;TD class="l data"&gt;HARDY&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TH class="r rowheader" scope="row"&gt;9&lt;/TH&gt;
&lt;TD class="l data"&gt;HARDY(FRNS.)'A'&lt;/TD&gt;
&lt;TD class="l data"&gt;A&lt;/TD&gt;
&lt;TD class="l data"&gt;HARDY&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TH class="r rowheader" scope="row"&gt;10&lt;/TH&gt;
&lt;TD class="l data"&gt;HAFSLUND 'B' (XSQ)&lt;/TD&gt;
&lt;TD class="l data"&gt;B&lt;/TD&gt;
&lt;TD class="l data"&gt;HAFSLUND&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TH class="r rowheader" scope="row"&gt;11&lt;/TH&gt;
&lt;TD class="l data"&gt;HAFSLUND 'B' (XSQ)&lt;/TD&gt;
&lt;TD class="l data"&gt;XSQ&lt;/TD&gt;
&lt;TD class="l data"&gt;HAFSLUND&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sun, 31 Mar 2019 21:42:33 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/split-value-in-different-variables-based-on-brackets/m-p/547522#M151735</guid>
      <dc:creator>ChrisNZ</dc:creator>
      <dc:date>2019-03-31T21:42:33Z</dc:date>
    </item>
  </channel>
</rss>

