Solved

perl, strip spaces and  double quote character at beginning and at the end of a string

Posted on 2010-08-19
10
557 Views
Last Modified: 2012-08-13
How do I strip spaces and double quote character at beginning and at the end of a string, if the double quote exist?

$string1 = "\"my string1\"";  # => to "my string1"
$string2 = "  \" my string2 \"  "; #=> to " mystring2 "
0
Comment
Question by:rgbcof
  • 3
  • 3
  • 2
  • +2
10 Comments
 
LVL 10

Accepted Solution

by:
jeromee earned 63 total points
ID: 33478895
Please try this:
   s/(^\s*")|("\s*$)//g;
0
 
LVL 3

Expert Comment

by:YellowShoe
ID: 33479545
Does '\' specify the part where the string starts/ends. If so you could use that as a delimiter as well.

Using your logic - if double quotes and spaces appear at the start and end of strong
$string1 =~ s/^[ "]*//; # delete all spaces and double quotes 0 0r more occurrences
$string1 =~ s/[ "]*$//;

alternately
$string1 = /^[^"]*([^\\]*)\\".*/$1"/;
0
 
LVL 26

Expert Comment

by:wilcoxon
ID: 33479555
This should do it:

$string =~ s{^[\s"]+}{};
$string =~ s{[\s"]+$}{};

Using | as jeromee did above will sometimes work and sometimes not.  For example,

$string =~ s{(?:^[\s"]+)|([\s"]+$)}{};

does not work.
0
Live: Real-Time Solutions, Start Here

Receive instant 1:1 support from technology experts, using our real-time conversation and whiteboard interface. Your first 5 minutes are always free.

 
LVL 84

Assisted Solution

by:ozo
ozo earned 62 total points
ID: 33479973
s/^\s*"//,s/"\s*$// for $string1,$string2 ;
0
 
LVL 84

Expert Comment

by:ozo
ID: 33480017
$string =~ s{(?:^[\s"]+)|([\s"]+$)}{}g; #works, but the g is required, and it is not as fast as s{^[\s"]+}{} and s{[\s"]+$}{}; separately, if you care about that
also, it does
$string2 = "  \" my string2 \"  "; #=> to "mystring2"
unlike the requested
$string2 = "  \" my string2 \"  "; #=> to " mystring2 "
0
 
LVL 10

Expert Comment

by:jeromee
ID: 33480100
I think the initial answer I posted:
   s/(^\s*")|("\s*$)//g;
works for both strings.
0
 
LVL 84

Expert Comment

by:ozo
ID: 33480145
Yes, it does work for both strings.
0
 
LVL 26

Expert Comment

by:wilcoxon
ID: 33480712
sigh - yep - I made two mistakes in my comment as ozo pointed out.  I left off the g on the "doesn't work" example (so it does work) and I misread the request so used char classes which are efficient but don't work in this case.

jeromee, yes, your answer worked.  I should have been more clear - I was trying to give a different example that didn't work (and failed at that as well).

Apparently my brain is dead today...
0
 

Author Closing Comment

by:rgbcof
ID: 33480905
You guys are such perl/regex expert.  I am so jealous.
0
 
LVL 10

Expert Comment

by:jeromee
ID: 33480938
If you play with regex regularly it gets easier, and it quickly loses its "crypticness", I promise!

Good luck.
0

Featured Post

Courses: Start Training Online With Pros, Today

Brush up on the basics or master the advanced techniques required to earn essential industry certifications, with Courses. Enroll in a course and start learning today. Training topics range from Android App Dev to the Xen Virtualization Platform.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
Perl program to obtain a machine's memory usage 6 22
Need Helping Editing Perl Script for PowerChute Network Shutdown 3 82
Convert grep lines to perl 6 35
Perl tar error 8 63
I've just discovered very important differences between Windows an Unix formats in Perl,at least 5.xx.. MOST IMPORTANT: Use Unix file format while saving Your script. otherwise it will have ^M s or smth likely weird in the EOL, Then DO NOT use m…
In the distant past (last year) I hacked together a little toy that would allow a couple of Manager types to query, preview, and extract data from a number of MongoDB instances, to their tool of choice: Excel (http://dilbert.com/strips/comic/2007-08…
Explain concepts important to validation of email addresses with regular expressions. Applies to most languages/tools that uses regular expressions. Consider email address RFCs: Look at HTML5 form input element (with type=email) regex pattern: T…
Microsoft Active Directory, the widely used IT infrastructure, is known for its high risk of credential theft. The best way to test your Active Directory’s vulnerabilities to pass-the-ticket, pass-the-hash, privilege escalation, and malware attacks …

816 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

8 Experts available now in Live!

Get 1:1 Help Now