<span class="pun">></span><span class="pln"> data </span><span class="pun"><-</span><span class="pln"> c</span><span class="pun">(</span><span class="str">"1600 Pennsylvania Avenue, Washington DC"</span><span class="pun">,</span> <span class="pun">+</span> <span class="str">",Siem Reap,FC,"</span><span class="pun">,</span> <span class="str">"11 Wall Street, New York, NY"</span><span class="pun">,</span> <span class="str">",Addis Ababa,FC,"</span><span class="pun">)</span> <span class="pun">></span><span class="pln"> gsub</span><span class="pun">(</span><span class="str">"(?<=^),|,(?=$)"</span><span class="pun">,</span> <span class="str">""</span><span class="pun">,</span><span class="pln"> data</span><span class="pun">,</span><span class="pln"> perl</span><span class="pun">=</span><span class="lit">TRUE</span><span class="pun">)</span> <span class="pun">[</span><span class="lit">1</span><span class="pun">]</span> <span class="str">"1600 Pennsylvania Avenue, Washington DC"</span> <span class="pun">[</span><span class="lit">2</span><span class="pun">]</span> <span class="str">"Siem Reap,FC"</span> <span class="pun">[</span><span class="lit">3</span><span class="pun">]</span> <span class="str">"11 Wall Street, New York, NY"</span> <span class="pun">[</span><span class="lit">4</span><span class="pun">]</span> <span class="str">"Addis Ababa,FC"</span>
Pattern explanation:
(?<=^),
In regex(?<=)
called positive look-behind. In our case it asserts What precedes the comma must be a line start^
. So it matches the starting comma.|
Logical OR operator usually used to combine(ie, ORing) two regexes.,(?=$)
Lookahead aseerts that what follows comma must be a line end$
. So it matches the comma present at the line end.