Rectangle 27 18

e = e || x assigns x to e if e evalutes to false.

if (!e) {
  e = x;
}
// or
e = e ? e : x
function handler(e) {
  e = e || window.event;
}

Where handler is an event listener attached to a DOM element. Since older versions of IE did not pass the event object as a parameter, one had to check if the parameter was undefined. If the latter was the case, one assigns the global window.event object (which IE supplied) to e.

javascript - Can someone please explain e = e || x? Why assign e to e?...

javascript events javascript-events
Rectangle 27 89

Clear out the temporary framework files for your project in:

For Windows 7, the path is:

C:\Users\[username]\AppData\Local\Temp\Temporary ASP.NET Files\

For 64 bit systems with 'Framework' in the path the full path is:

C:\WINDOWS\Microsoft.NET\Framework64\v2.0.50727\Temporary ASP.NET Files\

This should be marked as an answer @Simsons how about you mark it?

This is very useful information (it certainly solved my problem) but I don't think it is the correct answer as it refers to ASP .NET, whereas the question is about WPF.

Suddenly got this error after recovering from a BSOD on my Win10 machine. This fixed it for me. Thanks

c# - Exception from HRESULT: 0x80070057 (E_INVALIDARG) - Stack Overflo...

c# wpf .net-assembly
Rectangle 27 6

It doesn't assign both to "e", just the one that's not either undefined, null, 0, NaN, "", or false. It prefers the original value of "e" to window.event because "e" is on the left side of ||, but if it's empty (one of those values I listed) then "e" will be assigned window.event.

It's done because Internet Explorer didn't pass the event reference as a parameter, instead simply binding to a global symbol. Event handlers were very often written:

function someHandler(e) {
  e = e || window.event;
  // ...
}

It would probably have been more rigorously "correct" to write:

function pedanticHandler(e) {
  if (e === undefined) // or arguments.length == 0 perhaps
    e = window.event;
  // ...
}

Specifically, if e has a value, it keeps its value. If it is undefined, we look elsewhere for a value.

NaN also triggers the default...

@VivinPaliath Yes, it is! (... but only if someone in your team really declares the variable undefined ;) ).

javascript - Can someone please explain e = e || x? Why assign e to e?...

javascript events javascript-events
Rectangle 27 73

From what I remember on Windows the search order for a dll is:

C:\windows\system32 or c:\windows\SysWOW64
  • Reading from the Path environment variable

In addition I'd check the dependencies of the DLL, the dependency walker provided with Visual Studio can help you out here, it can also be downloaded for free: http://www.dependencywalker.com

found some dependency's missing (Oracle and some dll from IE). Need to install Oracle since my dll depends on that..then i will know :) Found the problem with DependencyWalker ;)

No worries, it's saved many hours of head scratching for me, great little tool! :-)

+1 to Keith Halligan for suggesting DependencyWalker. It told me that the not all the dependencies had the same CPU type (x86/x64). I copied all the files that had the same CPU type to my application's bin folder, and that resolved the problem.

Every dll I can find on my system has DependencyWalker claiming that there's an error with different CPU types - even System.Web.Mvc.dll. There's some sort of false alarm here.

In my case the problem was attempting to load a C++ DLL compiled for Debug. That needs the C++ debug runtime, which means you have to install Visual Studio. Or recompile the DLL for Release, and install the C++ runtime distributable.

c# - Unable to load DLL (Module could not be found HRESULT: 0x8007007E...

c# c++ dll pinvoke
Rectangle 27 73

From what I remember on Windows the search order for a dll is:

C:\windows\system32 or c:\windows\SysWOW64
  • Reading from the Path environment variable

In addition I'd check the dependencies of the DLL, the dependency walker provided with Visual Studio can help you out here, it can also be downloaded for free: http://www.dependencywalker.com

found some dependency's missing (Oracle and some dll from IE). Need to install Oracle since my dll depends on that..then i will know :) Found the problem with DependencyWalker ;)

No worries, it's saved many hours of head scratching for me, great little tool! :-)

+1 to Keith Halligan for suggesting DependencyWalker. It told me that the not all the dependencies had the same CPU type (x86/x64). I copied all the files that had the same CPU type to my application's bin folder, and that resolved the problem.

Every dll I can find on my system has DependencyWalker claiming that there's an error with different CPU types - even System.Web.Mvc.dll. There's some sort of false alarm here.

In my case the problem was attempting to load a C++ DLL compiled for Debug. That needs the C++ debug runtime, which means you have to install Visual Studio. Or recompile the DLL for Release, and install the C++ runtime distributable.

c# - Unable to load DLL (Module could not be found HRESULT: 0x8007007E...

c# c++ dll pinvoke
Rectangle 27 4

This line assigns the expression e || x to the variable e.

The value of e || x is the first truthy value. If e is truthy, that will be e; if e is falsy, it will be x.

javascript - Can someone please explain e = e || x? Why assign e to e?...

javascript events javascript-events
Rectangle 27 30

On OS X, \d is part of a regex feature set called enhanced features - note the distinction in name: enhanced, which is NOT the same as extended.

separate dimension from basic vs. extended

and

whether enhanced features are available in a given utility is precompiled into it

no option can change that

-E

description of all enhanced features

ENHANCED FEATURES
man re_format
awk

Sadly, the man pages for the various utilities do NOT state whether a given utility supports enhanced regex features, so it comes down to trial and error.

As of OS X 10.10.1

sed
grep
grep    -o '\d\+' <<<'a10' # -> '10' - enhanced basic regex
grep -E -o '\d+'  <<<'a10' # -> '10' - enhanced extended regex

Depressing news, but thanks for the thorough digging, @mklement0.

regex - OS X sed -E doesn't accept extended regular expressions - Stac...

regex osx sed
Rectangle 27 30

On OS X, \d is part of a regex feature set called enhanced features - note the distinction in name: enhanced, which is NOT the same as extended.

separate dimension from basic vs. extended

and

whether enhanced features are available in a given utility is precompiled into it

no option can change that

-E

description of all enhanced features

ENHANCED FEATURES
man re_format
awk

Sadly, the man pages for the various utilities do NOT state whether a given utility supports enhanced regex features, so it comes down to trial and error.

As of OS X 10.10.1

sed
grep
grep    -o '\d\+' <<<'a10' # -> '10' - enhanced basic regex
grep -E -o '\d+'  <<<'a10' # -> '10' - enhanced extended regex

Depressing news, but thanks for the thorough digging, @mklement0.

regex - OS X sed -E doesn't accept extended regular expressions - Stac...

regex macos sed
Rectangle 27 26

You can use the dumpbin tool to find out the required DLL dependencies:

dumpbin /DEPENDENTS my.dll

This will tell you which DLLs your DLL needs to load. Particularly look out for MSVCR*.dll. I have seen your error code occur when the correct Visual C++ Redistributable is not installed.

You can get the "Visual C++ Redistributable Packages for Visual Studio 2013" from the Microsoft website. It installs c:\windows\system32\MSVCR120.dll

In the file name, 120 = 12.0 = Visual Studio 2013.

Be careful that you have the right Visual Studio version (10.0 = VS 10, 11 = VS 2012, 12.0 = VS 2013...) right architecture (x64 or x86) for your DLL's target platform, and also you need to be careful around debug builds. The debug build of a DLL depends on MSVCR120d.dll which is a debug version of the library, which is installed with Visual Studio but not by the Redistributable Package.

adding the VS C++ redistributables was it for me! needed v10.0 (2010). Thanks mucho!!!

Is there any way to tell whether 64-bit or 32-bit versions of the redistributables are required?

dumpbin /ALL will tell you whether my.dll is x86 of x64

For those who still suffers from this problem, if you use debug binary, the C++ runtime redistributables version needs to be exactly the same as where you built it.

c# - Unable to load DLL (Module could not be found HRESULT: 0x8007007E...

c# c++ dll pinvoke
Rectangle 27 26

You can use the dumpbin tool to find out the required DLL dependencies:

dumpbin /DEPENDENTS my.dll

This will tell you which DLLs your DLL needs to load. Particularly look out for MSVCR*.dll. I have seen your error code occur when the correct Visual C++ Redistributable is not installed.

You can get the "Visual C++ Redistributable Packages for Visual Studio 2013" from the Microsoft website. It installs c:\windows\system32\MSVCR120.dll

In the file name, 120 = 12.0 = Visual Studio 2013.

Be careful that you have the right Visual Studio version (10.0 = VS 10, 11 = VS 2012, 12.0 = VS 2013...) right architecture (x64 or x86) for your DLL's target platform, and also you need to be careful around debug builds. The debug build of a DLL depends on MSVCR120d.dll which is a debug version of the library, which is installed with Visual Studio but not by the Redistributable Package.

adding the VS C++ redistributables was it for me! needed v10.0 (2010). Thanks mucho!!!

Is there any way to tell whether 64-bit or 32-bit versions of the redistributables are required?

dumpbin /ALL will tell you whether my.dll is x86 of x64

For those who still suffers from this problem, if you use debug binary, the C++ runtime redistributables version needs to be exactly the same as where you built it.

c# - Unable to load DLL (Module could not be found HRESULT: 0x8007007E...

c# c++ dll pinvoke
Rectangle 27 7

The above cdata function needs to look like the following, notice the last ">" is escaped in code. Otherwise there's compile errors.

private function cdata(data:String):XML
{
    return new XML("<![CDATA[" + data + "]]\>");                
}

this method works good for all case but what if my data is ']]>' i'm getting Error "The markup in the document following the root element must be well-formed." while converting to xml. is there any other way to fix it ?

actionscript 3 - E4X Add CDATA content - Stack Overflow

actionscript-3 e4x cdata
Rectangle 27 7

The above cdata function needs to look like the following, notice the last ">" is escaped in code. Otherwise there's compile errors.

private function cdata(data:String):XML
{
    return new XML("<![CDATA[" + data + "]]\>");                
}

this method works good for all case but what if my data is ']]>' i'm getting Error "The markup in the document following the root element must be well-formed." while converting to xml. is there any other way to fix it ?

actionscript 3 - E4X Add CDATA content - Stack Overflow

actionscript-3 e4x cdata
Rectangle 27 20

ERE (Extended Regular Expressions) are described in POSIX under (surprise) Regular Expressions or on Mac OS X under man re_format. EREs do not use the PCRE style \d notation to mean digit.

[0-9]
[[:digit:]]
$ echo "foo bar 2011-03-17 17:31:47 foo bar" |
> sed -E 's/[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}/FOUND/g'
foo bar FOUND foo bar
$ echo "foo bar 2011-03-17 17:31:47 foo bar" |
> sed -E 's/[[:digit:]]{4}-[[:digit:]]{2}-[[:digit:]]{2} [[:digit:]]{2}:[[:digit:]]{2}:[[:digit:]]{2}/FOUND/g'
foo bar FOUND foo bar
$

On my Mac OS X (10.7.4), the man re_format does not say anything about \d matching digits.

RE_FORMAT(7)         BSD Miscellaneous Information Manual     RE_FORMAT(7)

NAME
     re_format -- POSIX 1003.2 regular expressions

DESCRIPTION
     Regular expressions (``REs''), as defined in IEEE Std 1003.2
     (``POSIX.2''), come in two forms: modern REs (roughly those of egrep(1);
     1003.2 calls these ``extended'' REs) and obsolete REs (roughly those of
     ed(1); 1003.2 ``basic'' REs).  Obsolete REs mostly exist for backward
     compatibility in some old programs; they will be discussed at the end.
     IEEE Std 1003.2 (``POSIX.2'') leaves some aspects of RE syntax and seman-
     tics open; `=' marks decisions on these aspects that may not be fully
     portable to other IEEE Std 1003.2 (``POSIX.2'') implementations.

     A (modern) RE is one= or more non-empty= branches, separated by `|'.  It
     matches anything that matches one of the branches.

     A branch is one= or more pieces, concatenated.  It matches a match for
     the first, followed by a match for the second, etc.

     A piece is an atom possibly followed by a single= `*', `+', `?', or
     bound.  An atom followed by `*' matches a sequence of 0 or more matches
     of the atom.  An atom followed by `+' matches a sequence of 1 or more
     matches of the atom.  An atom followed by `?' matches a sequence of 0 or
     1 matches of the atom.

     A bound is `{' followed by an unsigned decimal integer, possibly followed
     by `,' possibly followed by another unsigned decimal integer, always fol-
     lowed by `}'.  The integers must lie between 0 and RE_DUP_MAX (255=)
     inclusive, and if there are two of them, the first may not exceed the
     second.  An atom followed by a bound containing one integer i and no
     comma matches a sequence of exactly i matches of the atom.  An atom fol-
     lowed by a bound containing one integer i and a comma matches a sequence
     of i or more matches of the atom.  An atom followed by a bound containing
     two integers i and j matches a sequence of i through j (inclusive)
     matches of the atom.

     An atom is a regular expression enclosed in `()' (matching a match for
     the regular expression), an empty set of `()' (matching the null
     string)=, a bracket expression (see below), `.' (matching any single
     character), `^' (matching the null string at the beginning of a line),
     `$' (matching the null string at the end of a line), a `\' followed by
     one of the characters `^.[$()|*+?{\' (matching that character taken as an
     ordinary character), a `\' followed by any other character= (matching
     that character taken as an ordinary character, as if the `\' had not been
     present=), or a single character with no other significance (matching
     that character).  A `{' followed by a character other than a digit is an
     ordinary character, not the beginning of a bound=.  It is illegal to end
     an RE with `\'.

     A bracket expression is a list of characters enclosed in `[]'.  It nor-
     mally matches any single character from the list (but see below).  If the
     list begins with `^', it matches any single character (but see below) not
     from the rest of the list.  If two characters in the list are separated
     by `-', this is shorthand for the full range of characters between those
     two (inclusive) in the collating sequence, e.g. `[0-9]' in ASCII matches
     any decimal digit.  It is illegal= for two ranges to share an endpoint,
     e.g. `a-c-e'.  Ranges are very collating-sequence-dependent, and portable
     programs should avoid relying on them.

     To include a literal `]' in the list, make it the first character (fol-
     lowing a possible `^').  To include a literal `-', make it the first or
     last character, or the second endpoint of a range.  To use a literal `-'
     as the first endpoint of a range, enclose it in `[.' and `.]' to make it
     a collating element (see below).  With the exception of these and some
     combinations using `[' (see next paragraphs), all other special charac-
     ters, including `\', lose their special significance within a bracket
     expression.

     Within a bracket expression, a collating element (a character, a multi-
     character sequence that collates as if it were a single character, or a
     collating-sequence name for either) enclosed in `[.' and `.]' stands for
     the sequence of characters of that collating element.  The sequence is a
     single element of the bracket expression's list.  A bracket expression
     containing a multi-character collating element can thus match more than
     one character, e.g. if the collating sequence includes a `ch' collating
     element, then the RE `[[.ch.]]*c' matches the first five characters of
     `chchcc'.

     Within a bracket expression, a collating element enclosed in `[=' and
     `=]' is an equivalence class, standing for the sequences of characters of
     all collating elements equivalent to that one, including itself.  (If
     there are no other equivalent collating elements, the treatment is as if
     the enclosing delimiters were `[.' and `.]'.)  For example, if `x' and
     `y' are the members of an equivalence class, then `[[=x=]]', `[[=y=]]',
     and `[xy]' are all synonymous.  An equivalence class may not= be an end-
     point of a range.

     Within a bracket expression, the name of a character class enclosed in
     `[:' and `:]' stands for the list of all characters belonging to that
     class.  Standard character class names are:

       alnum    digit    punct
       alpha    graph    space
       blank    lower    upper
       cntrl    print    xdigit

     These stand for the character classes defined in ctype(3).  A locale may
     provide others.  A character class may not be used as an endpoint of a
     range.

     A bracketed expression like `[[:class:]]' can be used to match a single
     character that belongs to a character class.  The reverse, matching any
     character that does not belong to a specific class, the negation operator
     of bracket expressions may be used: `[^[:class:]]'.

     There are two special cases= of bracket expressions: the bracket expres-
     sions `[[:<:]]' and `[[:>:]]' match the null string at the beginning and
     end of a word respectively.  A word is defined as a sequence of word
     characters which is neither preceded nor followed by word characters.  A
     word character is an alnum character (as defined by ctype(3)) or an
     underscore.  This is an extension, compatible with but not specified by
     IEEE Std 1003.2 (``POSIX.2''), and should be used with caution in soft-
     ware intended to be portable to other systems.

     In the event that an RE could match more than one substring of a given
     string, the RE matches the one starting earliest in the string.  If the
     RE could match more than one substring starting at that point, it matches
     the longest.  Subexpressions also match the longest possible substrings,
     subject to the constraint that the whole match be as long as possible,
     with subexpressions starting earlier in the RE taking priority over ones
     starting later.  Note that higher-level subexpressions thus take priority
     over their lower-level component subexpressions.

     Match lengths are measured in characters, not collating elements.  A null
     string is considered longer than no match at all.  For example, `bb*'
     matches the three middle characters of `abbbc',
     `(wee|week)(knights|nights)' matches all ten characters of `weeknights',
     when `(.*).*' is matched against `abc' the parenthesized subexpression
     matches all three characters, and when `(a*)*' is matched against `bc'
     both the whole RE and the parenthesized subexpression match the null
     string.

     If case-independent matching is specified, the effect is much as if all
     case distinctions had vanished from the alphabet.  When an alphabetic
     that exists in multiple cases appears as an ordinary character outside a
     bracket expression, it is effectively transformed into a bracket expres-
     sion containing both cases, e.g. `x' becomes `[xX]'.  When it appears
     inside a bracket expression, all case counterparts of it are added to the
     bracket expression, so that (e.g.)  `[x]' becomes `[xX]' and `[^x]'
     becomes `[^xX]'.

     No particular limit is imposed on the length of REs=.  Programs intended
     to be portable should not employ REs longer than 256 bytes, as an imple-
     mentation can refuse to accept such REs and remain POSIX-compliant.

     Obsolete (``basic'') regular expressions differ in several respects.  `|'
     is an ordinary character and there is no equivalent for its functional-
     ity.  `+' and `?' are ordinary characters, and their functionality can be
     expressed using bounds (`{1,}' or `{0,1}' respectively).  Also note that
     `x+' in modern REs is equivalent to `xx*'.  The delimiters for bounds are
     `\{' and `\}', with `{' and `}' by themselves ordinary characters.  The
     parentheses for nested subexpressions are `\(' and `\)', with `(' and `)'
     by themselves ordinary characters.  `^' is an ordinary character except
     at the beginning of the RE or= the beginning of a parenthesized subex-
     pression, `$' is an ordinary character except at the end of the RE or=
     the end of a parenthesized subexpression, and `*' is an ordinary charac-
     ter if it appears at the beginning of the RE or the beginning of a paren-
     thesized subexpression (after a possible leading `^').  Finally, there is
     one new type of atom, a back reference: `\' followed by a non-zero deci-
     mal digit d matches the same sequence of characters matched by the dth
     parenthesized subexpression (numbering subexpressions by the positions of
     their opening parentheses, left to right), so that (e.g.)  `\([bc]\)\1'
     matches `bb' or `cc' but not `bc'.

SEE ALSO
     regex(3)

     Regular Expression Notation, IEEE Std, 1003.2, section 2.8.

BUGS
     Having two kinds of REs is a botch.

     The current IEEE Std 1003.2 (``POSIX.2'') spec says that `)' is an ordi-
     nary character in the absence of an unmatched `('; this was an uninten-
     tional result of a wording error, and change is likely.  Avoid relying on
     it.

     Back references are a dreadful botch, posing major problems for efficient
     implementations.  They are also somewhat vaguely defined (does
     `a\(\(b\)*\2\)*d' match `abbbd'?).  Avoid using them.

     IEEE Std 1003.2 (``POSIX.2'') specification of case-independent matching
     is vague.  The ``one case implies all cases'' definition given above is
     current consensus among implementors as to the right interpretation.

     The syntax for word boundaries is incredibly ugly.

BSD             March 20, 1994                 BSD

How very odd. My man re_format shows a publication date of "Sept 29, 2011" on 10.8, but my 10.6.8 machine's page is identical to yours. As it happens, the /d was a mere foil for my question. I'm actually much more interested in \w and \W for which there are no (neat) alternatives. But you've helped me identify the problem, I think. Also -- many thanks for pointing out that PCREs aren't EREs. That will stop me being more stupid in future.

In 10.8.3 the re_format page, published Sept. 29, 2011, mentions all the various escaped character classes (\d, \w, \s, etc) under "ENHANCED FEATURES". However, using sed -E they don't seem to work at all. In fact, sed -E 's/\s//' matched the first 's' on each line, rather than white space as expected. Found this SO question trying to figure out why.

man sed
\d
\s
man re_format
sed -E 's/(ke|st)/xx/g'
ke
st
xx
-E

This is not entirely accurate. As @mklement0 notes in the second answer, "extended" and "enhanced" features are different. Note the first paragraphs of DESCRIPTION and ENHANCED FEATURES on man 7 re_format. IEEE 1003.2 (POSIX.2) defines obsolete/basic and modern/extended regular expressions. The enhanced features are additional rules (a little over half of the re_format documentation) which may conflict with the standard. The enhanced features are supported by OS X egrep but not sed.

regex - OS X sed -E doesn't accept extended regular expressions - Stac...

regex macos sed
Rectangle 27 20

ERE (Extended Regular Expressions) are described in POSIX under (surprise) Regular Expressions or on Mac OS X under man re_format. EREs do not use the PCRE style \d notation to mean digit.

[0-9]
[[:digit:]]
$ echo "foo bar 2011-03-17 17:31:47 foo bar" |
> sed -E 's/[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}/FOUND/g'
foo bar FOUND foo bar
$ echo "foo bar 2011-03-17 17:31:47 foo bar" |
> sed -E 's/[[:digit:]]{4}-[[:digit:]]{2}-[[:digit:]]{2} [[:digit:]]{2}:[[:digit:]]{2}:[[:digit:]]{2}/FOUND/g'
foo bar FOUND foo bar
$

On my Mac OS X (10.7.4), the man re_format does not say anything about \d matching digits.

RE_FORMAT(7)         BSD Miscellaneous Information Manual     RE_FORMAT(7)

NAME
     re_format -- POSIX 1003.2 regular expressions

DESCRIPTION
     Regular expressions (``REs''), as defined in IEEE Std 1003.2
     (``POSIX.2''), come in two forms: modern REs (roughly those of egrep(1);
     1003.2 calls these ``extended'' REs) and obsolete REs (roughly those of
     ed(1); 1003.2 ``basic'' REs).  Obsolete REs mostly exist for backward
     compatibility in some old programs; they will be discussed at the end.
     IEEE Std 1003.2 (``POSIX.2'') leaves some aspects of RE syntax and seman-
     tics open; `=' marks decisions on these aspects that may not be fully
     portable to other IEEE Std 1003.2 (``POSIX.2'') implementations.

     A (modern) RE is one= or more non-empty= branches, separated by `|'.  It
     matches anything that matches one of the branches.

     A branch is one= or more pieces, concatenated.  It matches a match for
     the first, followed by a match for the second, etc.

     A piece is an atom possibly followed by a single= `*', `+', `?', or
     bound.  An atom followed by `*' matches a sequence of 0 or more matches
     of the atom.  An atom followed by `+' matches a sequence of 1 or more
     matches of the atom.  An atom followed by `?' matches a sequence of 0 or
     1 matches of the atom.

     A bound is `{' followed by an unsigned decimal integer, possibly followed
     by `,' possibly followed by another unsigned decimal integer, always fol-
     lowed by `}'.  The integers must lie between 0 and RE_DUP_MAX (255=)
     inclusive, and if there are two of them, the first may not exceed the
     second.  An atom followed by a bound containing one integer i and no
     comma matches a sequence of exactly i matches of the atom.  An atom fol-
     lowed by a bound containing one integer i and a comma matches a sequence
     of i or more matches of the atom.  An atom followed by a bound containing
     two integers i and j matches a sequence of i through j (inclusive)
     matches of the atom.

     An atom is a regular expression enclosed in `()' (matching a match for
     the regular expression), an empty set of `()' (matching the null
     string)=, a bracket expression (see below), `.' (matching any single
     character), `^' (matching the null string at the beginning of a line),
     `$' (matching the null string at the end of a line), a `\' followed by
     one of the characters `^.[$()|*+?{\' (matching that character taken as an
     ordinary character), a `\' followed by any other character= (matching
     that character taken as an ordinary character, as if the `\' had not been
     present=), or a single character with no other significance (matching
     that character).  A `{' followed by a character other than a digit is an
     ordinary character, not the beginning of a bound=.  It is illegal to end
     an RE with `\'.

     A bracket expression is a list of characters enclosed in `[]'.  It nor-
     mally matches any single character from the list (but see below).  If the
     list begins with `^', it matches any single character (but see below) not
     from the rest of the list.  If two characters in the list are separated
     by `-', this is shorthand for the full range of characters between those
     two (inclusive) in the collating sequence, e.g. `[0-9]' in ASCII matches
     any decimal digit.  It is illegal= for two ranges to share an endpoint,
     e.g. `a-c-e'.  Ranges are very collating-sequence-dependent, and portable
     programs should avoid relying on them.

     To include a literal `]' in the list, make it the first character (fol-
     lowing a possible `^').  To include a literal `-', make it the first or
     last character, or the second endpoint of a range.  To use a literal `-'
     as the first endpoint of a range, enclose it in `[.' and `.]' to make it
     a collating element (see below).  With the exception of these and some
     combinations using `[' (see next paragraphs), all other special charac-
     ters, including `\', lose their special significance within a bracket
     expression.

     Within a bracket expression, a collating element (a character, a multi-
     character sequence that collates as if it were a single character, or a
     collating-sequence name for either) enclosed in `[.' and `.]' stands for
     the sequence of characters of that collating element.  The sequence is a
     single element of the bracket expression's list.  A bracket expression
     containing a multi-character collating element can thus match more than
     one character, e.g. if the collating sequence includes a `ch' collating
     element, then the RE `[[.ch.]]*c' matches the first five characters of
     `chchcc'.

     Within a bracket expression, a collating element enclosed in `[=' and
     `=]' is an equivalence class, standing for the sequences of characters of
     all collating elements equivalent to that one, including itself.  (If
     there are no other equivalent collating elements, the treatment is as if
     the enclosing delimiters were `[.' and `.]'.)  For example, if `x' and
     `y' are the members of an equivalence class, then `[[=x=]]', `[[=y=]]',
     and `[xy]' are all synonymous.  An equivalence class may not= be an end-
     point of a range.

     Within a bracket expression, the name of a character class enclosed in
     `[:' and `:]' stands for the list of all characters belonging to that
     class.  Standard character class names are:

       alnum    digit    punct
       alpha    graph    space
       blank    lower    upper
       cntrl    print    xdigit

     These stand for the character classes defined in ctype(3).  A locale may
     provide others.  A character class may not be used as an endpoint of a
     range.

     A bracketed expression like `[[:class:]]' can be used to match a single
     character that belongs to a character class.  The reverse, matching any
     character that does not belong to a specific class, the negation operator
     of bracket expressions may be used: `[^[:class:]]'.

     There are two special cases= of bracket expressions: the bracket expres-
     sions `[[:<:]]' and `[[:>:]]' match the null string at the beginning and
     end of a word respectively.  A word is defined as a sequence of word
     characters which is neither preceded nor followed by word characters.  A
     word character is an alnum character (as defined by ctype(3)) or an
     underscore.  This is an extension, compatible with but not specified by
     IEEE Std 1003.2 (``POSIX.2''), and should be used with caution in soft-
     ware intended to be portable to other systems.

     In the event that an RE could match more than one substring of a given
     string, the RE matches the one starting earliest in the string.  If the
     RE could match more than one substring starting at that point, it matches
     the longest.  Subexpressions also match the longest possible substrings,
     subject to the constraint that the whole match be as long as possible,
     with subexpressions starting earlier in the RE taking priority over ones
     starting later.  Note that higher-level subexpressions thus take priority
     over their lower-level component subexpressions.

     Match lengths are measured in characters, not collating elements.  A null
     string is considered longer than no match at all.  For example, `bb*'
     matches the three middle characters of `abbbc',
     `(wee|week)(knights|nights)' matches all ten characters of `weeknights',
     when `(.*).*' is matched against `abc' the parenthesized subexpression
     matches all three characters, and when `(a*)*' is matched against `bc'
     both the whole RE and the parenthesized subexpression match the null
     string.

     If case-independent matching is specified, the effect is much as if all
     case distinctions had vanished from the alphabet.  When an alphabetic
     that exists in multiple cases appears as an ordinary character outside a
     bracket expression, it is effectively transformed into a bracket expres-
     sion containing both cases, e.g. `x' becomes `[xX]'.  When it appears
     inside a bracket expression, all case counterparts of it are added to the
     bracket expression, so that (e.g.)  `[x]' becomes `[xX]' and `[^x]'
     becomes `[^xX]'.

     No particular limit is imposed on the length of REs=.  Programs intended
     to be portable should not employ REs longer than 256 bytes, as an imple-
     mentation can refuse to accept such REs and remain POSIX-compliant.

     Obsolete (``basic'') regular expressions differ in several respects.  `|'
     is an ordinary character and there is no equivalent for its functional-
     ity.  `+' and `?' are ordinary characters, and their functionality can be
     expressed using bounds (`{1,}' or `{0,1}' respectively).  Also note that
     `x+' in modern REs is equivalent to `xx*'.  The delimiters for bounds are
     `\{' and `\}', with `{' and `}' by themselves ordinary characters.  The
     parentheses for nested subexpressions are `\(' and `\)', with `(' and `)'
     by themselves ordinary characters.  `^' is an ordinary character except
     at the beginning of the RE or= the beginning of a parenthesized subex-
     pression, `$' is an ordinary character except at the end of the RE or=
     the end of a parenthesized subexpression, and `*' is an ordinary charac-
     ter if it appears at the beginning of the RE or the beginning of a paren-
     thesized subexpression (after a possible leading `^').  Finally, there is
     one new type of atom, a back reference: `\' followed by a non-zero deci-
     mal digit d matches the same sequence of characters matched by the dth
     parenthesized subexpression (numbering subexpressions by the positions of
     their opening parentheses, left to right), so that (e.g.)  `\([bc]\)\1'
     matches `bb' or `cc' but not `bc'.

SEE ALSO
     regex(3)

     Regular Expression Notation, IEEE Std, 1003.2, section 2.8.

BUGS
     Having two kinds of REs is a botch.

     The current IEEE Std 1003.2 (``POSIX.2'') spec says that `)' is an ordi-
     nary character in the absence of an unmatched `('; this was an uninten-
     tional result of a wording error, and change is likely.  Avoid relying on
     it.

     Back references are a dreadful botch, posing major problems for efficient
     implementations.  They are also somewhat vaguely defined (does
     `a\(\(b\)*\2\)*d' match `abbbd'?).  Avoid using them.

     IEEE Std 1003.2 (``POSIX.2'') specification of case-independent matching
     is vague.  The ``one case implies all cases'' definition given above is
     current consensus among implementors as to the right interpretation.

     The syntax for word boundaries is incredibly ugly.

BSD             March 20, 1994                 BSD

How very odd. My man re_format shows a publication date of "Sept 29, 2011" on 10.8, but my 10.6.8 machine's page is identical to yours. As it happens, the /d was a mere foil for my question. I'm actually much more interested in \w and \W for which there are no (neat) alternatives. But you've helped me identify the problem, I think. Also -- many thanks for pointing out that PCREs aren't EREs. That will stop me being more stupid in future.

In 10.8.3 the re_format page, published Sept. 29, 2011, mentions all the various escaped character classes (\d, \w, \s, etc) under "ENHANCED FEATURES". However, using sed -E they don't seem to work at all. In fact, sed -E 's/\s//' matched the first 's' on each line, rather than white space as expected. Found this SO question trying to figure out why.

man sed
\d
\s
man re_format
sed -E 's/(ke|st)/xx/g'
ke
st
xx
-E

This is not entirely accurate. As @mklement0 notes in the second answer, "extended" and "enhanced" features are different. Note the first paragraphs of DESCRIPTION and ENHANCED FEATURES on man 7 re_format. IEEE 1003.2 (POSIX.2) defines obsolete/basic and modern/extended regular expressions. The enhanced features are additional rules (a little over half of the re_format documentation) which may conflict with the standard. The enhanced features are supported by OS X egrep but not sed.

regex - OS X sed -E doesn't accept extended regular expressions - Stac...

regex osx sed
Rectangle 27 6

Removing all temp files from the path below still works, it saved my development site hosted on a web server from (HRESULT: 0x80070057 (E_INVALIDARG))

c# - Exception from HRESULT: 0x80070057 (E_INVALIDARG) - Stack Overflo...

c# wpf .net-assembly
Rectangle 27 6

<doc>
  <tag>&lt;non-escaped-content&gt;</tag>
</doc>

i admit, this is not CDATA, but i don't see a problem ... parsing requires a little more time, but OTOH, correct escaping much more robust than CDATA ...

the version with XMLNode uses the flash.xml package, which is for backwards compatibility with AS2 ... didn't even notice, it was gone under FP10 ... however, you could use this

var x:XML = new XML("<![CDATA[" + nodeValue + "]]>");

as a replacement and then use appendChild as you would with flash.xml ...

alternatively you could use it e4x style, if you wrap it in a function

function cdata(data:String):XML {
    return = new XML("<![CDATA[" + data + "]]>");
}

and then

var xml:XML = <doc><{nodeName}>{cdata(nodeValue)}</{nodeName}></doc>

but personally, i think that strings, that are both text based and relatively short, should be escaped, rather then wrapped in CDATA ...

"" is very different than a "<"

that's what the whole thing is about ... :D ... "<" would be interpreted during parsing, whereas "" is just reconverted to "<", so after parsing the XML, you will have exactly the same string as before ...

package {
    import flash.display.MovieClip;
    public class Main extends MovieClip {       
        public function Main():void {
            var nodeName:String = "tag";
            var nodeValue:String = "<non-escaped-content>";
            var xml:XML = <doc><{nodeName}>{cdata(nodeValue)}</{nodeName}></doc>;
            trace(cdata("test").toXMLString());
            trace(xml.toXMLString());
        }
        private function cdata(data:String):XML {
            return new XML("<![CDATA[" + data + "]]>");
        }
    }
}

works perfectly for me on flash player 10, compiled with flex sdk 4 ... don't have a flash IDE at hand, but when it comes to pure ActionScript results are almost definitely the same, so it should work (you can use that as your document class, if you want to, or simply instantiate it) ...

btw. the first trace shows, that the second example works, which is also quite obvious, since new XML(<String>) uses the native XML parser to create an XML from the given string ...

here is what the above generates:

<![CDATA[test]]>
<doc>
  <tag><![CDATA[<non-escaped-content>]]></tag>
</doc>

Hey, thanks. The reason why I want CDATA is that the method is used to log strings including XML, where a "" is very different than a "<" of course ... Unfortunately the second solution will convert the tags of the CDATA to "[CDATA[ ]]" ignoring the whole signification of the CDATA () :( Did you actually make the 3rd solution work ? This used to work in FP9 but gives me a runtime error in FP10 ?

I'm not getting the cdata helper function to compile in Flex SDK 3.X anything.

@taudep: what errors are you getting?

I'm getting mxml compiler error: "Parse error at '\");\n\t\t}\n\n\n\t\....return new XML("<![CDATA[" + data + "]]>");" I added a compilable implementation of the cdata function below.

actionscript 3 - E4X Add CDATA content - Stack Overflow

actionscript-3 e4x cdata
Rectangle 27 6

<doc>
  <tag>&lt;non-escaped-content&gt;</tag>
</doc>

i admit, this is not CDATA, but i don't see a problem ... parsing requires a little more time, but OTOH, correct escaping much more robust than CDATA ...

the version with XMLNode uses the flash.xml package, which is for backwards compatibility with AS2 ... didn't even notice, it was gone under FP10 ... however, you could use this

var x:XML = new XML("<![CDATA[" + nodeValue + "]]>");

as a replacement and then use appendChild as you would with flash.xml ...

alternatively you could use it e4x style, if you wrap it in a function

function cdata(data:String):XML {
    return = new XML("<![CDATA[" + data + "]]>");
}

and then

var xml:XML = <doc><{nodeName}>{cdata(nodeValue)}</{nodeName}></doc>

but personally, i think that strings, that are both text based and relatively short, should be escaped, rather then wrapped in CDATA ...

"" is very different than a "<"

that's what the whole thing is about ... :D ... "<" would be interpreted during parsing, whereas "" is just reconverted to "<", so after parsing the XML, you will have exactly the same string as before ...

package {
    import flash.display.MovieClip;
    public class Main extends MovieClip {       
        public function Main():void {
            var nodeName:String = "tag";
            var nodeValue:String = "<non-escaped-content>";
            var xml:XML = <doc><{nodeName}>{cdata(nodeValue)}</{nodeName}></doc>;
            trace(cdata("test").toXMLString());
            trace(xml.toXMLString());
        }
        private function cdata(data:String):XML {
            return new XML("<![CDATA[" + data + "]]>");
        }
    }
}

works perfectly for me on flash player 10, compiled with flex sdk 4 ... don't have a flash IDE at hand, but when it comes to pure ActionScript results are almost definitely the same, so it should work (you can use that as your document class, if you want to, or simply instantiate it) ...

btw. the first trace shows, that the second example works, which is also quite obvious, since new XML(<String>) uses the native XML parser to create an XML from the given string ...

here is what the above generates:

<![CDATA[test]]>
<doc>
  <tag><![CDATA[<non-escaped-content>]]></tag>
</doc>

Hey, thanks. The reason why I want CDATA is that the method is used to log strings including XML, where a "" is very different than a "<" of course ... Unfortunately the second solution will convert the tags of the CDATA to "[CDATA[ ]]" ignoring the whole signification of the CDATA () :( Did you actually make the 3rd solution work ? This used to work in FP9 but gives me a runtime error in FP10 ?

I'm not getting the cdata helper function to compile in Flex SDK 3.X anything.

@taudep: what errors are you getting?

I'm getting mxml compiler error: "Parse error at '\");\n\t\t}\n\n\n\t\....return new XML("<![CDATA[" + data + "]]>");" I added a compilable implementation of the cdata function below.

actionscript 3 - E4X Add CDATA content - Stack Overflow

actionscript-3 e4x cdata
Rectangle 27 13

The following does the trick:

$str = "some ";

echo preg_replace('/[\x{00ff}-\x{ffff}]/u', '*', $str);
// some **********

echo preg_replace('/[^\x{00ff}-\x{ffff}]/u', '*', $str);
// *****

The important thing is the u-modifier (see here):

This modifier turns on additional functionality of PCRE that is incompatible with Perl. Pattern strings are treated as UTF-8. This modifier is available from PHP 4.1.0 or greater on Unix and from PHP 4.2.3 on win32. UTF-8 validity of the pattern is checked since PHP 4.3.5.

And here a short description why \uFFFF is not working in PHP:

Perl and PCRE do not support the \uFFFF syntax. They use \x{FFFF} instead. You can omit leading zeros in the hexadecimal number between the curly braces. Since \x by itself is not a valid regex token, \x{1234} can never be confused to match \x 1234 times. It always matches the Unicode code point U+1234. \x{1234}{5678} will try to match code point U+1234 exactly 5678 times.

Does the \uXXXX syntax work with u modifier? Can you check if this works? /[\u00FF-\uFFFF]/u

@openid: You have one [ to much.

regex - How do I replace characters not in range [0x5E10, 0x7F35] with...

php regex hex
Rectangle 27 13

The following does the trick:

$str = "some ";

echo preg_replace('/[\x{00ff}-\x{ffff}]/u', '*', $str);
// some **********

echo preg_replace('/[^\x{00ff}-\x{ffff}]/u', '*', $str);
// *****

The important thing is the u-modifier (see here):

This modifier turns on additional functionality of PCRE that is incompatible with Perl. Pattern strings are treated as UTF-8. This modifier is available from PHP 4.1.0 or greater on Unix and from PHP 4.2.3 on win32. UTF-8 validity of the pattern is checked since PHP 4.3.5.

And here a short description why \uFFFF is not working in PHP:

Perl and PCRE do not support the \uFFFF syntax. They use \x{FFFF} instead. You can omit leading zeros in the hexadecimal number between the curly braces. Since \x by itself is not a valid regex token, \x{1234} can never be confused to match \x 1234 times. It always matches the Unicode code point U+1234. \x{1234}{5678} will try to match code point U+1234 exactly 5678 times.

Does the \uXXXX syntax work with u modifier? Can you check if this works? /[\u00FF-\uFFFF]/u

@openid: You have one [ to much.

regex - How do I replace characters not in range [0x5E10, 0x7F35] with...

php regex hex
Rectangle 27 13

The following does the trick:

$str = "some ";

echo preg_replace('/[\x{00ff}-\x{ffff}]/u', '*', $str);
// some **********

echo preg_replace('/[^\x{00ff}-\x{ffff}]/u', '*', $str);
// *****

The important thing is the u-modifier (see here):

This modifier turns on additional functionality of PCRE that is incompatible with Perl. Pattern strings are treated as UTF-8. This modifier is available from PHP 4.1.0 or greater on Unix and from PHP 4.2.3 on win32. UTF-8 validity of the pattern is checked since PHP 4.3.5.

And here a short description why \uFFFF is not working in PHP:

Perl and PCRE do not support the \uFFFF syntax. They use \x{FFFF} instead. You can omit leading zeros in the hexadecimal number between the curly braces. Since \x by itself is not a valid regex token, \x{1234} can never be confused to match \x 1234 times. It always matches the Unicode code point U+1234. \x{1234}{5678} will try to match code point U+1234 exactly 5678 times.

Does the \uXXXX syntax work with u modifier? Can you check if this works? /[\u00FF-\uFFFF]/u

@openid: You have one [ to much.

regex - How do I replace characters not in range [0x5E10, 0x7F35] with...

php regex hex