|
Posted by Andy Jeffries on 12/18/64 11:48
On Mon, 22 May 2006 19:52:24 -0500, Alan Little wrote:
>> On p79 of Mastering Regular Expressions by Jeffrey E F Friedl (ISBN
>> 1-56592-257-3) it says:
>>
>> "In limited-metacharacter-class implementations, other metacharacter
>> (including in most tools, even backslashes) are not recognized. So, for
>> example, you can't use \- or \] to insert a hyphen or a closing bracket
>> in to the class." This precedes a list of characters that are available
>> in these limited implementations which are specifically: a leading
>> caret, the closing bracket and a dash as a range operator.
>>
>> I'm sure that book details the "standard" for regular expressions in
>> most people's eyes and that book (as quoted above) uses \- as the syntax
>> to insert a literal hyphen with a metacharacter class ([...]).
>>
>> So it would seem that while [^0-9-] works in PHP/Perl, it's actually not
>> standard and I am correct to use [^0-9\-] in order to ensure maximum
>> compatibility with future version which may implement the standard more
>> strictly.
>
> That's a good reference, but I don't follow you. The part you quoted from
> the book says you *can't* use \- to insert a hyphen in the class.
In case it's not clear, that's a book on Regular Expressions and not
specifically about PHP regexes.
In a *limited-metacharacter-class implementation*. Those implementations
can only accept leading caret, closing bracket and a hyphen as a range
character (i.e. there's no way to find a hyphen, a slash or any other
non-alphanumeric character). PHP is not a limited-metacharacter-class
implementation.
Cheers,
Andy
--
Andy Jeffries MBCS CITP ZCE | gPHPEdit Lead Developer
http://www.gphpedit.org | PHP editor for Gnome 2
http://www.andyjeffries.co.uk | Personal site and photos
Navigation:
[Reply to this message]
|