BookmarkSubscribeRSS Feed
michael_friendly
Fluorite | Level 6

In the test below, wherever I have a reference field that looks like a URL, I want to change it into an HTML link to that

reference.  But there's something I'm missing between perl regexps and the translation into a call to prxchange()

data refs;

    input obs lname $ reference $160;

    datalines;

  2    Halley         http://www-groups.dcs.st-and.ac.uk/history/Biographies/Halley.html

  4    Graunt         Graunt:1662, http://www.encyclopedia.com/topic/John_Graunt.aspx

  6    Galton         Stigler:1986, p.281

17    Halley         http://www-history.mcs.st-and.ac.uk/Biographies/Halley.html

19    Serjev         Wainer-Harik:2013

20    Ortelius       http://en.wikipedia.org/wiki/Theatrum_Orbis_Terrarum

21    Playfair       Tufte:1983

28    Hollerith      Wikipedia

29    Lippershey     http://en.wikipedia.org/wiki/History_of_the_telescope#The_first_known_telescopes

33    Pascal         Ball:1908

37    de Colmar      http://en.wikipedia.org/wiki/Arithmometer

38    Minard         Tufte:1983, Minard:1869a

44    Galton         Stigler:1986,p297

46    Halley         http://www-groups.dcs.st-and.ac.uk/history/Biographies/Halley.html

;

data refs;

    set refs;

        *-- Turn URLs into links-- why doesnt this work??

            reference = prxchange('s|(https?://.*)[\s\b;]?|<a href="$1">$1</a>|i', -1, reference);

run;

proc print data=refs;

run;

I get a syntax error:

19   data refs;

20       set refs;

21           *-- Turn URLs into links-- why doesnt this work??

22               reference = prxchange('s|(https?://.*)[\s\b;]?|<a

                                                             -

                                                             180

22 ! href="$1">$1</a>|i', -1, reference);

ERROR 180-322: Statement is not valid or it is used out of proper order.

1 REPLY 1
PGStats
Opal | Level 21

It was almost right, this works :

data refs;
length reference $160;
    input obs lname $ reference;
    datalines;
  2    Halley         http://www-groups.dcs.st-and.ac.uk/history/Biographies/Halley.html
  4    Graunt         Graunt:1662, http://www.encyclopedia.com/topic/John_Graunt.aspx
  6    Galton         Stigler:1986, p.281
17    Halley         http://www-history.mcs.st-and.ac.uk/Biographies/Halley.html
19    Serjev         Wainer-Harik:2013
20    Ortelius       http://en.wikipedia.org/wiki/Theatrum_Orbis_Terrarum
21    Playfair       Tufte:1983
28    Hollerith      Wikipedia
29    Lippershey     http://en.wikipedia.org/wiki/History_of_the_telescope#The_first_known_telescopes
33    Pascal         Ball:1908
37    de Colmar      http://en.wikipedia.org/wiki/Arithmometer
38    Minard         Tufte:1983, Minard:1869a
44    Galton         Stigler:1986,p297
46    Halley         http://www-groups.dcs.st-and.ac.uk/history/Biographies/Halley.html
;

data refs2;
length reference2 $160;
    set refs;
    /*-- Turn URLs into links -- */
    reference2 = prxchange('s|(https?://.*)[\s\b;]?|<a href="$1">$1</a>|i', 1, trim(reference));
run;

options linesize=132;
proc sql;
select reference, reference2 from refs2;
quit;

PG

PG

sas-innovate-2024.png

Available on demand!

Missed SAS Innovate Las Vegas? Watch all the action for free! View the keynotes, general sessions and 22 breakouts on demand.

 

Register now!

How to Concatenate Values

Learn how use the CAT functions in SAS to join values from multiple variables into a single value.

Find more tutorials on the SAS Users YouTube channel.

Click image to register for webinarClick image to register for webinar

Classroom Training Available!

Select SAS Training centers are offering in-person courses. View upcoming courses for:

View all other training opportunities.

Discussion stats
  • 1 reply
  • 756 views
  • 0 likes
  • 2 in conversation