Regex help with removing double quotes

Regex help with removing double quotes

am 05.11.2007 20:11:49 von aj1

Hello group,

I am attempting to remove double quotes from the beginning and ending of a
string. Admittedly, I am not the best with regular expressions, but I do
have two that work with preg_replace(). Here they are:

$pattern = '[^"]'; <--- removes the beginning double quote
$pattern = '["$]'; <--- removes the ending double quote

But when I try to make this all one statement with:

$pattern = '[^"].*["$]';

PHP throws a warning with an unknown modifier '.'. I then tried to enclose
'.*' in parentheses and I get an unknown modifier '('.

This is getting beyond my regex knowledge, if anyone has any advice on this
it would be greatly appreciated.

Thanks in advance,

AJ Schroeder

Re: Regex help with removing double quotes

am 05.11.2007 20:35:29 von Justin Koivisto

Schroeder, AJ wrote:
> Hello group,
>
> I am attempting to remove double quotes from the beginning and ending of a
> string. Admittedly, I am not the best with regular expressions, but I do
> have two that work with preg_replace(). Here they are:
>
> $pattern = '[^"]'; <--- removes the beginning double quote
> $pattern = '["$]'; <--- removes the ending double quote
>
> But when I try to make this all one statement with:
>
> $pattern = '[^"].*["$]';
>
> PHP throws a warning with an unknown modifier '.'. I then tried to enclose
> '.*' in parentheses and I get an unknown modifier '('.
>
> This is getting beyond my regex knowledge, if anyone has any advice on this
> it would be greatly appreciated.
>
> Thanks in advance,
>
> AJ Schroeder
>
>

when using preg_* you need escape chars for the expression....

your first patterns should look something like:

$pat = '`^"`'; // quote at beginning of string

$pat = '`"$`'; // quote at end of string

$pat = '`^"(.*)"$`'; // single-line string that starts and ends with a quote

--
Posted via a free Usenet account from http://www.teranews.com

Re: Regex help with removing double quotes

am 05.11.2007 21:40:57 von aj1

Justin Koivisto wrote:
> Schroeder, AJ wrote:
>> Hello group,
>>
>> I am attempting to remove double quotes from the beginning and
>> ending of a string. Admittedly, I am not the best with regular
>> expressions, but I do have two that work with preg_replace(). Here
>> they are: $pattern = '[^"]'; <--- removes the beginning double quote
>> $pattern = '["$]'; <--- removes the ending double quote
>>
>> But when I try to make this all one statement with:
>>
>> $pattern = '[^"].*["$]';
>>
>> PHP throws a warning with an unknown modifier '.'. I then tried to
>> enclose '.*' in parentheses and I get an unknown modifier '('.
>>
>> This is getting beyond my regex knowledge, if anyone has any advice
>> on this it would be greatly appreciated.
>>
>> Thanks in advance,
>>
>> AJ Schroeder
>>
>>
>
> when using preg_* you need escape chars for the expression....
>
> your first patterns should look something like:
>
> $pat = '`^"`'; // quote at beginning of string
>
> $pat = '`"$`'; // quote at end of string
>
> $pat = '`^"(.*)"$`'; // single-line string that starts and ends with
> a quote

Hmm, maybe I am that dense, but that last expression seemed to torch the
entire string and return nothing. The first two work no problem.

Still confused...

Re: Regex help with removing double quotes

am 05.11.2007 21:56:16 von luiheidsgoeroe

On Mon, 05 Nov 2007 20:11:49 +0100, Schroeder, AJ wrote:

> Hello group,
>
> I am attempting to remove double quotes from the beginning and ending =
of =

> a
> string. Admittedly, I am not the best with regular expressions, but I =
do
> have two that work with preg_replace(). Here they are:
>
> $pattern =3D '[^"]'; <--- removes the beginning double quote
> $pattern =3D '["$]'; <--- removes the ending double quote
>
> But when I try to make this all one statement with:
>
> $pattern =3D '[^"].*["$]';
>
> PHP throws a warning with an unknown modifier '.'. I then tried to =

> enclose
> '.*' in parentheses and I get an unknown modifier '('.

Yes indeed.
The preg_* function expect a pattern like this:
(delimiter)(pattern)(delimiter)(modifiers)

You are free to choose your own delimiter ('/' is pretty standard), and =
a =

second occurance of that character is assumed to end the pattern and sta=
rt =

the modifiers. (I'm actually quite ammazed it matches '[' to ']', a quit=
e =

rigid implementation would throw an error stating that " was an unknown =
=

modifier).

$string =3D preg_replace('/(^"+|"+$)/','',$string);
-- =

Rik Wasmus

Re: Regex help with removing double quotes

am 06.11.2007 03:22:50 von Justin Koivisto

Schroeder, AJ wrote:
> Justin Koivisto wrote:
>> Schroeder, AJ wrote:
>>> Hello group,
>>>
>>> I am attempting to remove double quotes from the beginning and
>>> ending of a string. Admittedly, I am not the best with regular
>>> expressions, but I do have two that work with preg_replace(). Here
>>> they are: $pattern = '[^"]'; <--- removes the beginning double quote
>>> $pattern = '["$]'; <--- removes the ending double quote
>>>
>>> But when I try to make this all one statement with:
>>>
>>> $pattern = '[^"].*["$]';
>>>
>>> PHP throws a warning with an unknown modifier '.'. I then tried to
>>> enclose '.*' in parentheses and I get an unknown modifier '('.
>>>
>>> This is getting beyond my regex knowledge, if anyone has any advice
>>> on this it would be greatly appreciated.
>>>
>>> Thanks in advance,
>>>
>>> AJ Schroeder
>>>
>>>
>> when using preg_* you need escape chars for the expression....
>>
>> your first patterns should look something like:
>>
>> $pat = '`^"`'; // quote at beginning of string
>>
>> $pat = '`"$`'; // quote at end of string
>>
>> $pat = '`^"(.*)"$`'; // single-line string that starts and ends with
>> a quote
>
> Hmm, maybe I am that dense, but that last expression seemed to torch the
> entire string and return nothing. The first two work no problem.
>
> Still confused...

The last pattern assumes the string is a single line (no \r or \n in
it), and both begins and ends with "

This would match that pattern:
"The fox jumped over the lazy dog."

This would not:
The fox jumped over the "lazy" dog.

If you want to match as in the second string, try something more along
the lines of:

$pat = '`"([^"]*)"`';

When you are unsure how your patterns are matching, try something like
this to view it quickly:

if(preg_match_all($pat,$string,$m)){
echo '

';
print_r($m);
echo '
';
}


see the manual page for preg_match_all if you are not sure what the $m
array means.

--
Posted via a free Usenet account from http://www.teranews.com

Re: Regex help with removing double quotes

am 06.11.2007 03:23:00 von Justin Koivisto

Schroeder, AJ wrote:
> Justin Koivisto wrote:
>> Schroeder, AJ wrote:
>>> Hello group,
>>>
>>> I am attempting to remove double quotes from the beginning and
>>> ending of a string. Admittedly, I am not the best with regular
>>> expressions, but I do have two that work with preg_replace(). Here
>>> they are: $pattern = '[^"]'; <--- removes the beginning double quote
>>> $pattern = '["$]'; <--- removes the ending double quote
>>>
>>> But when I try to make this all one statement with:
>>>
>>> $pattern = '[^"].*["$]';
>>>
>>> PHP throws a warning with an unknown modifier '.'. I then tried to
>>> enclose '.*' in parentheses and I get an unknown modifier '('.
>>>
>>> This is getting beyond my regex knowledge, if anyone has any advice
>>> on this it would be greatly appreciated.
>>>
>>> Thanks in advance,
>>>
>>> AJ Schroeder
>>>
>>>
>> when using preg_* you need escape chars for the expression....
>>
>> your first patterns should look something like:
>>
>> $pat = '`^"`'; // quote at beginning of string
>>
>> $pat = '`"$`'; // quote at end of string
>>
>> $pat = '`^"(.*)"$`'; // single-line string that starts and ends with
>> a quote
>
> Hmm, maybe I am that dense, but that last expression seemed to torch the
> entire string and return nothing. The first two work no problem.
>
> Still confused...

The last pattern assumes the string is a single line (no \r or \n in
it), and both begins and ends with "

This would match that pattern:
"The fox jumped over the lazy dog."

This would not:
The fox jumped over the "lazy" dog.

If you want to match as in the second string, try something more along
the lines of:

$pat = '`"([^"]*)"`';

When you are unsure how your patterns are matching, try something like
this to view it quickly:

if(preg_match_all($pat,$string,$m)){
echo '

';
print_r($m);
echo '
';
}


see the manual page for preg_match_all if you are not sure what the $m
array means.

--
Posted via a free Usenet account from http://www.teranews.com

Re: Regex help with removing double quotes

am 06.11.2007 21:53:00 von aj1

Rik Wasmus wrote:
> On Mon, 05 Nov 2007 20:11:49 +0100, Schroeder, AJ wrote:
>
>> Hello group,
>>
>> I am attempting to remove double quotes from the beginning and
>> ending of a
>> string. Admittedly, I am not the best with regular expressions, but
>> I do have two that work with preg_replace(). Here they are:
>>
>> $pattern = '[^"]'; <--- removes the beginning double quote
>> $pattern = '["$]'; <--- removes the ending double quote
>>
>> But when I try to make this all one statement with:
>>
>> $pattern = '[^"].*["$]';
>>
>> PHP throws a warning with an unknown modifier '.'. I then tried to
>> enclose
>> '.*' in parentheses and I get an unknown modifier '('.
>
> Yes indeed.
> The preg_* function expect a pattern like this:
> (delimiter)(pattern)(delimiter)(modifiers)
>
> You are free to choose your own delimiter ('/' is pretty standard),
> and a second occurance of that character is assumed to end the
> pattern and start the modifiers. (I'm actually quite ammazed it
> matches '[' to ']', a quite rigid implementation would throw an error
> stating that " was an unknown modifier).
>
> $string = preg_replace('/(^"+|"+$)/','',$string);

Justin and Rik,

Thank you for the help! I am now able to strip off beginning and ending
quotes of strings. Although I am still messing around with different strings
to handle all the combination of strings I will have to process, I have a
great starting point.

Thank you again.

AJ Schroeder