text:
A Regular Expression is the term used to describe a codified method of searching invented, or defined, by the American mathematician Stephen Kleene.
The syntax (language format) described on this page is compliant with extended regular expressions (EREs) defined in IEEE POSIX 1003.2 (Section 2.8). EREs are now commonly supported by Apache, PERL, PHP4, Javascript 1.3+, MS Visual Studio, most visual editors, vi, emac, the GNU family of tools (including grep, awk and sed) as well as many others. Extended Regular Expressions (EREs) will support Basic Regular Expressions (BREs are essentially a subset of EREs). Most applications, utilities and laguages that implement RE's, especially PERL, extend the ERE capabilities and what are typically called PERL Compatible Regular Expressions (PCREs) have, largely, become a de facto standard. Implementation documentation should always be consulted in case some wierd Regular Expression variant is involved.
Translation: The page has been translated into Hungarian by Zsolt Boros - many thanks.
A Gentle Introduction: - the Basics
Simple Searches
Brackets, Ranges and Negation [] , - and ^
Search Positioning (aka Anchors) ^ and $
Iteration (aka Quantifiers) ?, *, + , {n}, {n.m} and {n,}
Parenthesis and Alternation () and |
POSIX Standard Character Classes:
Commonly Available extensions: - \w etc
Subexpressions, Submatches, Groups and Backreferences:
Regular Expression Tester: - Experiment with your own target strings and search expressions in your browser
Some Examples: - A worked example and some samples
Notes: - general notes when using utilities and lanuages
Utility notes: - using Visual Studio regular expressions
Utility notes: - using sed for file manipulation (not for the faint hearted)
The title is deceptive. There is no gentle beginning to regular expressions. You are either into hieroglyphics big time - in which case you will love this stuff - or you need to use regular expressions, in which case your only reward may be a headache. But they are jolly useful. Sometimes.
We are going to be using the terms literal, metacharacter, target string, escape sequence and search expression (a.k.a. regular expression) in this overview. Here is a definition of our terms:
literal | A literal is any character we use in a search or matching expression, for example, to find ind in windows the ind is a literal string - each character plays a part in the search, it is literally the string we want to find. |
metacharacter | A metacharacter is one or more special characters that have a unique meaning and are NOT used as literals in the search expression, for example, the character ^ (circumflex or caret) is a metacharacter. |
target string | This term describes the string that we will be searching, that is, the string in which we want to find our match or search pattern. |
search expression | Most commonly called the regular expression. This term describes the search expression that we will be using to search our target string, that is, the pattern we use to find what we want. |
escape sequence | An escape sequence is a way of indicating that we want to use one of our metacharacters as a literal. In a regular expression an escape sequence involves placing the metacharacter \ (backslash) in front of the metacharacter that we want to use as a literal, for example, if we want to find (s) in the target string window(s) then we use the search expression \(s\) and if we want to find \\file in the target string c:\\file then we would need to use the search expression \\\\file (each \ we want to search for as a literal (there are 2) is preceded by an escape sequence \). |
Throughout this guide we will use the following as our target strings:
STRING1 Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt) STRING2 Mozilla/4.75 [en](X11;U;Linux2.2.16-22 i586)
These are Browser ID Strings and appear as the Apache Environmental variable HTTP_USER_AGENT (full list of Apache environmental variables).
We are going to try some simple matching against our example target strings:
Note: You can also experiment as you go through the examples.
Search for (search expression) |
m | STRING1 | match | Finds the m in compatible |
STRING2 | no match | There is no lower case m in this string. Searches are case sensitive unless you take special action. | |
a/4 | STRING1 | match | Found in Mozilla/4.0 - any combination of characters can be used for the match |
STRING2 | match | Found in same place as in STRING1 | |
5 \[ | STRING1 | no match | The search is looking for a pattern of '5 [' and this does NOT exist in STRING1. Spaces are valid in searches. |
STRING2 | match | Found in Mozilla/4.75 [en] | |
Note: The \ (backslash) is an escape character and must be present since the following [ is a meta character that we will meet in the next section. | |||
in | STRING1 | match | found in Windows |
STRING2 | match | Found in Linux | |
le | STRING1 | match | found in compatible |
STRING2 | no match | There is an l and an e in this string but they are not adjacent (or contiguous). |
Check the results in our Regular Expression Tester.
<grovel> In previous versions of this guide we incorrectly omitted the \ in the expression '5 \['. This, correctly, gives a syntax error in the RE tester - though the additional, explanatory text in the error message is misleading. This stuff is hard enough without us introducing careless errors. A heartfelt and humbling apology is offered. Those of you who were tearing your hair out in frustration can now stop.</grovel>
Bracket expressions introduce our first metacharacters, in this case the square brackets which allow us to define list of things to test for rather than the single characters we have been checking up until now. These lists can be grouped into what are known as Character Classes typically comprising well known groups, such as all numbers etc.
Metacharacter |
Meaning |
[ ] |
Match anything inside the square brackets for ONE character position, once and only once. For example, [12] means match the target to 1 and if that does not match then match the target to 2 while [0123456789] means match to any character in the range 0 to 9. |
- | The - (dash) inside square brackets is the 'range separator' and allows us to define a range, in our example above of [0123456789] we could rewrite it as [0-9]. You can define more than one range inside a list, for example, [0-9A-C] means check for 0 to 9 and A to C (but not a to c). NOTE: To test for - inside brackets (as a literal) it must come first or last, that is, [-0-9] will test for - and 0 to 9. |
^ | The ^ (circumflex or caret) inside square brackets negates the expression (we will see an alternate use for the circumflex/caret outside square brackets later), for example, [^Ff] means anything except upper or lower case F and [^a-z] means everything except lower case a to z. Notes:
NOTE: There are some special range values (Character Classes) that are built-in to most regular expression software and have to be if it claims POSIX 1003.2 compliance for either BRE or ERE.
So let's try this new stuff with our target strings.
Search for (search expression) |
in[du] | STRING1 | match | finds ind in Windows |
STRING2 | match | finds inu in Linux | |
x[0-9A-Z] | STRING1 | no match | All the tests are case sensitive. To find the xt in DigExt we would need to use [0-9a-z] or [0-9A-Zt]. We can also use this format for testing upper and lower case, for example, [Ff] will check for lower and upper case F. |
STRING2 | match | Finds x2 in Linux2 | |
[^A-M]in | STRING1 | match | Finds Win in Windows |
STRING2 | no match | We have excluded the range A to M in our search so Linux is not found but linux (if it were present) would be found. |
Check the results in our Regular Expression Tester.
We can control where in our target strings the matches are valid. The following is a list of metacharacters that affect the position of the search:
Metacharacter |
Meaning |
^ | The ^ (circumflex or caret) when not used inside square brackets (where it has a diffent meaning) means look only at the beginning of the target string, for example, ^Win will not find Windows in STRING1 but ^Moz will find Mozilla. |
$ | The $ (dollar) means look only at the end of the target string, for example, fox$ will find a match in 'silver fox' since it appears at the end of the string but not in 'the fox jumped over the moon'. |
. | The . (period) means any character(s) in this position, for example, ton. will find tons, tone and tonn in tonneau but not wanton because it has no following character. |
NOTE: Many systems and utilities, but not all, support special positioning macros, for example \< match at beginning of word, \> match at end of word, \b match at the begining OR end of word , \B except at the beginning or end of a word. List of the common values.
So let's try this lot out with our example target strings..
Search for (search expression) |
[a-z]\)$ | STRING1 | match | finds t) in DigiExt) Note: The \ is an escape character and is required to treat the ) as a literal |
STRING2 | no match | We have a numeric value at the end of this string but we would need [0-9a-z]) to find it. | |
.in | STRING1 | match | Finds Win in Windows. |
STRING2 | match | Finds Lin in Linux. |
Check the results in our Regular Expression Tester.
The following is a set of iteration metacharacters (a.k.a. quantifiers) that can control the number of times the preceding character is found in our searches. The iteration meta characters can also be used in conjunction with parenthesis meta characters.
Metacharacter |
Meaning |
? | The ? (question mark) matches when the preceding character occurs 0 or 1 times only, for example, colou?r will find both color (u is found 0 times) and colour (u is found 1 time). |
* | The * (asterisk or star) matches when the preceding character occurs 0 or more times, for example, tre* will find tree (e is found 2 times) and tread (e is found 1 time) and trough (e is found 0 times and thus returns a match only on the tr). |
+ | The + (plus) matches when the preceding character occurs 1 or more times, for example, tre+ will find tree (e is found 2 times) and tread (e is found 1 time) but NOT trough (0 times). |
{n} | Matches when the preceding character, or character range, occurs n times exactly, for example, to find a local phone number we could use [0-9]{3}-[0-9]{4} which would find any number of the form 123-4567. Value is enclosed in braces (curly brackets).
Note: The - (dash) in this case, because it is outside the square brackets, is a literal. Louise Rains writes to say that it is invalid to commence a NXX code (the NXX code is the 123 part of 123-4567 in the example above) with a zero (which would be permitted in the expression above). In this case the expression [1-9][0-9]{2}-[0-9]{4} would be necessary to find a valid local phone number. |
{n,m} | Matches when the preceding character occurs at least n times but not more than m times, for example, ba{2,3}b will find baab and baaab but NOT bab or baaaab. Values are enclosed in braces (curly brackets). |
{n,} | Matches when the preceding character occurs at least n times, for example, ba{2,}b will find 'baab', 'baaab' or 'baaaab' but NOT 'bab'. Values are enclosed in braces (curly brackets). |
Note: While it may be obvious to some, it is also worth emphasizing what characters play a role in iteration. In all the above examples only the character immediately preceding the iteration character or expression takes part in the iteration, all other characters in the search expression (regular expression) are literals. Thus, in the first example search expression colou?r, the string colo is a literal and must be found before the iteration sequence (u?) is triggered which, if satisfied, must also be followed by the literal r for a match to occur.
So let's try them out with our example target strings.
Search for (search expression) |
\(.*l | STRING1 | match | finds the ( and l in (compatible. The opening \ is an escape character used to indicate the ( it precedes is a literal (search character) not a metacharacter.
Note: If you use the tester with STRING1 and the above expression it will return the match (compatibl. The literal ( essentially anchors the search - it simply says start the search only when an ( is found. The following .* says the ( may be followed by any character (.), zero or more times (*) (thus compatib are essentially random characters that happen to appear in this string - they were not part of the search) and terminate the search on finding an l literal. Only the ( and l are truly part of the search expression. |
STRING2 | no match | Mozilla contains lls but not preceded by an open parenthesis (no match) and Linux has an upper case L (no match). | |
We had previously defined the above test using the search value l? (thanks to David Werner Wiebe for pointing out our error). The search expression l? actually means find anything, even if it has no l (l 0 or 1 times), so would match on both strings. We had been looking for a method to find a single l and exclude ll which, without lookahead (a relatively new extension to regular expressions pioneered by PERL) is pretty difficult. Well, that is our excuse. |
W*in | STRING1 | match | Finds the Win in Windows. |
STRING2 | match | Finds in in Linux preceded by W zero times - so a match. | |
[xX][0-9a-z]{2} | STRING1 | no match | Finds x in DigExt but only one t. |
STRING2 | match | Finds X and 11 in X11. |
Check the results in the Regular Expression Tester.
The following is a set of additional metacharacters that provide added power to our searches:
Metacharacter |
Meaning |
() | The ( (open parenthesis) and ) (close parenthesis) may be used to group (or bind) parts of our search expression together. Officially this is called a subexpression (a.k.a. a submatch or group) and subexpressions may be nested to any depth. Parentheses (subexpresions) also capture the matched element into a variable that may be used as a backreference. See this example for its use in binding OR more about subexpressions (aka grouping or submatching) and their use as backreferences. |
| | The | (vertical bar or pipe) is called alternation in techspeak and means find the left hand OR right values, for example, gr(a|e)y will find 'gray' or 'grey' and has the sense that - having found the literal characters 'gr' - if the first test is not valid (a) the second will be tried (e), if the first is valid the second will not be tried. Alternation can be nested within each expression, thus gr((a|e)|i)y will find 'gray', 'grey' and 'griy'. |
So let's try these out with our example strings.
Search for (search expression) |
^([L-Z]in) | STRING1 | no match | The '^' is an anchor (because it lies outside any square brackets) indicating first position. Win does not start the string so no match. |
STRING2 | no match | The '^' is an anchor (because it lies outside any square brackets) indicating first position. Linux does not start the string so no match. | |
((4\.[0-3])|(2\.[0-3])) | STRING1 | match | Finds the 4.0 in Mozilla/4.0. The '\.' sequence uses the escape metacharacter (\) to ensure that the '.' (dot) is used as a literal in the search. |
STRING2 | match | Finds the 2.2 in Linux2.2.16-22. | |
(W|L)in | STRING1 | match | Finds Win in Windows. |
STRING2 | match | Finds Lin in Linux. |
<humblepie> In a pevious version of this page, we blew the expression ^([L-Z]in). We, incorrectly, stated that this would negate the tests [L-Z], the '^' only performs this function inside square brackets, here it is outside the square brackets and is an anchor indicating 'start from first character'. Many thanks to Mirko Stojanovic for pointing it out and apologies to one and all.</humblepie>
Check the results in the Regular Expression Tester.
For more information on regular expressions go to our links pages under Languages/regex. There are lots of folks who get a real buzz out of making any search a 'one liner' and they are incredibly helpful at telling you how they did it. Welcome to the wonderful, if arcane, world of Regular Expressions. You may want to play around with your new found knowledge using this tool.
POSIX 1003.2 section 126.96.36.199 (6) defines a set of character classes that denote certain common ranges. They tend to look very ugly but have the advantage that also take into account the 'locale', that is, any variant of the local language/coding system. Many utilities/languages provide short-hand ways of invoking these classes. Strictly, the names used and hence their contents reference the LC_CTYPE POSIX definition (1003.2 section 220.127.116.11).
Value |
Meaning |
[:alnum:] | Any alphanumeric character 0 to 9 OR A to Z or a to z (the set defined by upper, lower and digit) |
[:alpha:] | Any alpha character A to Z or a to z (the set defined by upper and lower). |
[:ascii:] | Any characters in (hexadecmal) range x00 to x7F. |
[:blank:] | Space, TAB characters only. |
[:cntrl:] | Control Characters NL CR LF TAB VT FF NUL SOH STX EXT EOT ENQ ACK SO SI DLE DC1 DC2 DC3 DC4 NAK SYN ETB CAN EM SUB ESC IS1 IS2 IS3 IS4 DEL. |
[:digit:] | Only the digits 0 to 9 |
[:graph:] | Any printable characters (set defined by alnum and punct) but excludes the single character SPACE. |
[:lower:] | Any alpha character a to z. |
[:punct:] | Punctuation symbols . , " ' ? ! ; : # $ % & ( ) * + - / < > = @ [ ] \ ^ _ { } | ~ |
[:print:] | Any printable character (set defined by alnum and punct) plus the single character SPACE. |
[:space:] | Any whitespace characters (space, tab, NL, FF, VT, CR). Many system abbreviate as \s. |
[:word:] | Any word characters ([a-zA-Z0-9_]). Many system abbreviate as \w. |
[:upper:] | Any alpha character A to Z. |
[:xdigit:] | Hexadecimal notation 0-9, A-F, a-f [0-9A-Fa-f]. |
These are always used inside square brackets in the form [[:alnum:]] or combined as [[:digit:]a-d]
Some utitlities and most languages provide extensions or abbreviations to simplify(!) regular expressions. These tend to fall into Character Classes or position extensions and the most common are listed below. In general, these extensions are defined by PERL in what is called PCRE's (Perl Compatible Regular Expressions) which have been implemented in the form of a library that has been ported to many systems. Full details of PCRE. PERL 5 regular expression documentation. (PERL 6 has changed its regular expression rules somewhat but these have not (perhaps yet) found their way into the PCRE libraries.)
While the \x type syntax (formal name is Backslash Sequence) can look confusing the backslash precedes a character that does not normally need escaping and hence can be interpreted correctly by the utility or language - whereas we simple humans tend to become more easily confused. The following PCRE are supported by: .NET, PHP, PERL, RUBY, PYTHON, Javascript as well as many others.
Backslash Sequences | |
\d | Match any character in the range 0 - 9 (equivalent of POSIX [:digit:]) |
\D | Match any character NOT in the range 0 - 9 (equivalent of POSIX [^[:digit:]]) |
\s | Match any whitespace characters (space, tab etc.). (equivalent of POSIX [:space:] EXCEPT VT is not recognized) |
\S | Match any character NOT whitespace (space, tab). (equivalent of POSIX [^[:space:]]). |
\w | Match any character in the range 0 - 9, A - Z, a - z and underscore (_) [0-9A-Za-z_]. Equivalent of POSIX [:word:]) |
\W | Match any character NOT the range 0 - 9, A - Z, a - z and punctuation (equivalent of POSIX [^[:graph:]]) |
Positional Abbreviations | |
\b | Word boundary. Match any character(s) at the beginning (\bxx) and/or end (xx\b) of a word, thus \bton\b will find ton but not tons, but \bton will find tons. |
\B | Not word boundary. Match any character(s) NOT at the beginning(\Bxx) and/or end (xx\B) of a word, thus \Bton\B will find wantons but not tons, but ton\B will find both wantons and tons. |
Note: There are some (minor) differences between the character set claasifications used by POSIX and PCRE, when in doubt use the longer (and uglier) POSIX Character Class definitions.
All regular expression implementations that claim BRE (or higher) compatibility provide the last results of each separate match enclosed in parenthesis (officially called a subexpression but frequently called a submatch or group) in variables that may subsequently (after the regular expression has been executed) be used or substituted in an expression by using a backreference. There may be one or more such groupings in any regular expression. These variables are usually numbered $1 to $9. Where $1 will contain the first submatch, $2 will contain the second submatch and so on. The $x value typically persists until another regular expression is encountered. Examples:
# assume target string = "cat" search expression = (c|a)(t|z) $1 will contain "a" # the 'c' is found but the next character fails (t|z) # the search advances by one character # the 'c' is not found but 'a' is and the # next character finds 't' in (t|z) - match # if the target string was "act" # $1 would contain "c" $2 will contain "t" in both cases # OpenLDAP 'access to' directive example: assume target dn # is "ou=something,cn=my name,dc=example,dc=com" # then $1 = 'my name' at end of match below # because first regular expression does not use () access to dn.regex="ou=[^,]+,cn=([^,]+),dc=example,dc=com" # subsequent expression contains backreference by dn.exact,expand="cn=$1,dc=example,dc=com" # However, in the following directive access to dn.regex="ou=([^,]+),cn=([^,]+),dc=example,dc=com" # subsequent expression contains backreference by dn.exact,expand="cn=$2,dc=example,dc=com" # $1 will contain 'something' and # $2 will contain 'my name' because # both regular expressions use ()
When used within a single expression these submatches (subexpressions) are typically called groups and are placed in numeric variables addressed using a backreference of the form \1 to \9. These groups or backreferences (variables) may be substituted within the regular expression. The following example demonstrates usage:
# the following expression finds any occurrence of double characters (.)\1 # the parenthesis creates the grouping (or submatch or subexpression) # in this case it is the first (only), so is backreferenced by \1 # the . (dot) finds any character and the \1 backrefence substitutes whatever # character was found by the dot in the next character position, # thus to match it must find two consecutive characters which are the same
It is possible to suppress the capture of any subexpression or group (enclosed in parenthesis) into a backreference by adding the string '?:' immediately after the opening parenthesis (. The following example illustrates this behaviour:
# in both cases assume target dn # is "ou=something,cn=my name,dc=example,dc=com" # all groups capture to backreference variables access to dn.regex="ou=([^,]+),cn=([^,]+),dc=example,dc=com" # subsequent expression contains backreference by dn.exact,expand="cn=$2,dc=example,dc=com" # $1 will contain 'something' and # $2 will contain 'my name' because # both regular expressions use () # first group capture to backreference variable is suppressed access to dn.regex="ou=(?:[^,]+),cn=([^,]+),dc=example,dc=com" # subsequent expression contains backreference by dn.exact,expand="cn=$1,dc=example,dc=com" # $1 will contain 'my name'
Enter or copy/paste the string you want to search in the box labled String: and the regular expression in the box labeled RE:, click the Search button and results will appear in the box labeled Results:. If you are very lucky (or a certifiable genius) the results may even be what you expect. The tester displays the whole searched string in the Results field and encloses in < > the first found result. This may not be terribly helpful if you are dealing with HTML - but our heart is in the right place. All matches are then displayed separately showing the found text and its character position in the string. Checking the Case Insensitive: box makes the search case insensitive thus [AZ] will find the "a" in "cat", whereas without checking the box [aZ] would be required to find the "a" in "cat". Note: Not all regular expression systems provide a case insensitivity feature and therefore the regular expression may not be portable.
Checking Results only will supress display of the marked up original string and only show the results found, undoing all our helpful work, but which can make things a little less confusing especially if dealing with HTML strings or anything else with multiple < > symbols. Clear will zap all the fields - including the regular expression that you just took 6 hours to develop. Use with care. See the notes below for limitations, support and capabilities.
If the regular expression is invalid or syntactically incorrect the tester will display in the Results field exactly what your browser thought of your attempt - sometimes it might even be useful.
The Results field now shows (assuming your syntax is valid) the value of any backreference variables (in the range $1 - $9). These backreferences can either be accessed by the use of the variables $1 to $9 in subsequent expressions or by \1 to \9 within the same regular expression. If none exist (there were no subexpressions or groups in the regular expression) then, surprisingly, none will be displayed.
Backreferences: displays all group in the regular expression in the order in which they were encountered and wheter or not they triggered termination. Thus, if a multiple level of nesting is used as in the string "cat" with a regular expression of ((c|a)|(a|t)) then 3 backreferences are displayed $1= c (the outer parenthesis was the first encountered and will always contain one of the match strings in the nested groups), $2= c (this is (c|a) group which causes the expression to terminate) and $3 = undefined (covers the (a|t) group which was not triggered in terminating the expression).
<ouch> We had an error such that if the match occurred in the first position the enclosing <> was incorrectly displayed.</ouch>
If you plan to experiment with the target strings used to illustrate usage of the various meta characters we have thoughtfully replicated them below to save you all that scrolling. Just copy and paste into the String box.
STRING1 Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt) STRING2 Mozilla/4.75 [en](X11;U;Linux2.2.16-22 i586)
String: | |
Options: | Case Insensitive: Results Only: |
Results: |
The ECMA-262 (Javascript 1.2'ish) spec defines the regex implementation to be based on Perl 5 which means that submatches/backreferences and short forms, such as \d, should be supported in addition to standard BRE and ERE functionality.
In Opera and MSIE the following backreference/submatch worked:
Which finds any occurence of double characters, such as, oo in spoon. Using Gecko (Firefox 2.something) it did not work. Since, at least, Gecko/20100228 (possibly even before that) the expression now works.
The regular expression tester terminates on the first match found and marks its position in the search string by enclosing it in <>, displays the whole match string together with character position where it started and any backeferences applicable at that point. The tester then iterates through the rest of the string to find further matches and displays only the match string together with the character position of the first character of the match string under the heading Additional matches:. Each iteration starts from the character immediately after the last character of any match string. Overlapped matches will not be found.
For those of you familiar with Javascript's regular expressions there is no need to add the enclosing //, just enter the raw regular expression. Those of you not familiar with Javascript regular expressions - ignore the preceding sentence.
The following sections show a number of worked examples which may help to clarify regular expression. Most likely they will not.
All we ever wanted to do with Regular Expressions was to find enough about visiting browsers arriving at our Apache powered web site to decide what HTML/CSS to supply or not for our pop-out menus. The Apache BrowserMatch directives will set a variable if the expression matches the USER_AGENT string.
We want to know:
Here in their glory are the Apache regular expression statements we used (maybe you can understand them now, 'cos we cannot)
BrowserMatchNoCase [Mm]ozilla/[4-6] isJS BrowserMatchNoCase MSIE isIE BrowserMatchNoCase [Gg]ecko isW3C BrowserMatchNoCase MSIE.((5\.[5-9])|([6-9]|1[0-9])) isW3C BrowserMatchNoCase (W3C_|[Vv]alidator) isW3C BrowserMatchNoCase (iphone|[mM]obile) isMob
Note: Readers who are vaguely aware of Apache features or who can read will probably have surmised that BrowserMatchNoCase does what it says on the tin. Checking for both upper and lower case variants is superfluous. However, it does illustrate regular expression usage in case sensitive operations.
Line 2 checks for MSIE only (line 1 will take out any MSIE 1-3 browsers even if this variable is set.
Line 3 checks for any upper or lower case variant of the Gecko browser which includes Firefox, Netscape 6, 7 and now 8 and the Moz clones (all of which are Mozilla/5).
Line 4 checks for MSIE 5.5 (or greater) OR MSIE 6 - 19 (future proofing - though at the rate MS is updating MSIE it will probably be out-of-date next month).
NOTE about binding:This expression does not work:
BrowserMatchNoCase MSIE.(5\.[5-9])|([6-9]) isW3C
It incorrectly sets variable isW3C if the number 6 - 9 appears in the string. Our guess is the binding of the first parenthesis is directly to the MSIE expression and the OR and second parenthesis is treated as a separate expression. Adding the inner parenthesis fixed the problem.
Line 5 checks for W3C_ or Validator in any part of the line. This allows us to identify the W3C validation services (either CSS or HTML/XHTML page validation).
Line 6 checks for either iphone or mobile in any part of the line and if present sets the isMob variable which we use to provide a viewport definition (due to the broken nature of google's mobile tester) and suppress right hand menus on smaller screens.
Some of the above checks may be a bit excessive, for example, is Mozilla ever spelled mozilla?, but it is also pretty silly to have code fail just because of this 'easy to prevent' condition. There is apparently no final consensus that all Gecko browsers will have to use Gecko in their 'user-agent' string but it would be extremely foolish not to, since this would force guys like us to make huge numbers of tests for branded products and the more likely outcome would be that we would not.
The following examples may be useful, they are particularly aimed at extracting parameters but cover some other ground as well. If anyone wants to email us some more examples we'd be happy to add them with an appropriate credit.
# split on simple space string "aaa bbb ccc" re = \S+ result = "aaa", "bbb", "ccc" # Note: If you want the location of the whitespace (space) use \s+ # css definition split on space or comma but keep "" enclosed items string = '10pt "Times Roman",Helvetica,Arial,sans-serif' re = \s*("[^"]+"|[^ ,]+) result = "10pt", "\"Times Roman\"", "Helvetica", "Arial", "sans-serif" # extract HTML <> enclosed tags string = '<a href="#">A link</a>' re = <[^>]*> result = '<a href="#">', "</a>" # find all double characters string = 'aabcdde' re = (.)\1 result = "aa", "dd" # separate comma delimted values into groups (submatches or backreferences) string = ou=people,cn=web,dc=example,dc=com re = ou=[^,]+,cn=([^,]+),dc=example,dc=com result $1 variable will contain "web" - first expression has no grouping () However, using re = ou=([^,]+),cn=([^,]+),dc=example,dc=com $1 will contain "people" and $2 will contain "web"
Certain utilities, notably grep, suggest that it is a good idea to enclose any complex search expression inside single quotes. In fact it is not a good idea - it is absolutely essential! Example:
grep 'string\\' *.txt # this works correctly grep string\\ *.txt # this does not work
Some utilities and most languages use / (forward slash) to start and end (de-limit or contain) the search expression others may use single quotes. This is especially true when there may be optional following arguments (see the grep example above). These characters do not play any role in the search itself.
For reasons best know to itself MS Visual Studio (VS.NET) uses a bizarre set of extensions to regular expressions. (MS VS standard documentation) But there is a free regular expression add-in if you want to return to sanity.
Stream editor (sed) is one of those amazingly powerful tools for manipulating files that are simply horrible when you try to use them - unless you get a buzz out of ancient Egyptian hieroglyphics. But well worth the effort. So if you are hieroglyphically-challenged, like us, these notes may help. There again they may not. There is also a useful series of tutorials on sed and this list of sed one liners.
not all seds are equal: Linux uses GNU sed, the BSDs use their own, slightly different, version.
sed on windows: GNU sed has been ported to windows.
sed is line oriented: sed operates on lines of text within the file or input stream.
expression quoting: To avoid shell expansion (in BASH especially) quote all expressions in single quotes as in a 'search expression'.
sed defaults to BRE: The default behaviour of sed is to support Basic Regular Expressions (BRE). To use all the features described on this page set the -r (Linux) or -E (BSD) flag to use Extended Regular Expressions (ERE) as shown:
# use ERE on Linux (GNU sed) sed -r 'search expression' file # use ERE on BSD sed -E 'search expression' file
in-situ editing: By default sed outputs to 'Standard Out' (normally the console/shell). There are two mutually exclusive options to create modified files. Redirect 'standard out' to a file or use in-situ editing with the -i option. The following two lines illustrate the options:
# in-situ: saves the unmodified file to file.bak BEFORE # modifying sed -i .bak 'search expression' file # redirection: file is UNCHANGED the modified file is file.bak sed 'search expression' file > file.bak
sed source: Sed will read from a file or 'Standard In' and therefore may be used in piped sequences. The following two lines are functionally equivalent:
cat file |sed 'search expression' > file.mod sed 'search expression' file > file.mod
sed with substitution: sed's major use for most of us is in changing the contents of files using the substitution feature. Subsitution uses the following expression:
# substitution syntax sed '[position]s/find/change/flag' file > file.mod # where # [position] - optional - normally called address in most documentation # s - indicates substitution command # find - the expression to be changed # change - the expression to be substituted # flag - controls the actions and may be # g = repeat on same line # N = Nth occurence only on line # p = output line only if find was found! # (needs -n option to suppress other lines) # w ofile = append line to ofile only if find # was found # if no flag given changes only the first occurrence of # find on every line is substituted # examples # change every occurrence of abc on every line to def sed 's/abc/def/g' file > file.mod # change only 2nd occurrence of abc on every line to def sed 's/abc/def/2' file > file.mod # creates file changed consisting of only lines in which # abc was changed to def sed 's/abc/def/w changed' file # functionally identical to above sed -n 's/abc/def/p' file > changed
Line deletion: sed provides for simple line deletion. The following examples illustrate the syntax and a trivial example:
# line delete syntax sed '/find/d' file > file.mod # where # find - find regular expression # d - delete command # delete every comment line (starting with #) in file sed '/^#/d' file > file.mod
Delete vs Replace with null: If you use the delete feature of sed it deletes the entire line on which 'search expression' appears, which may not be the desired outcome. If all you want to do is delete the 'search expression' from the line then use replace with null. The following examples illustrate the difference:
# delete (substitute with null) every occurrence of abc in file sed 's/abc//g' file > file.mod # delete every line with abc in file sed '/abc/d' file > file.mod
Escaping: You need to escape certain characters when using them as literals using the standard \ technique. This removes the width attribute from html pages that many web editors annoyingly place on every line. The " are used as literals in the expression and are escaped by using \:
# delete (substitue with null) every occurrence of width="x" in file # where x may be pure numeric or a percentage sed 's/width=\"[0-9.%]*\"//g' file.html > file.mod
Delimiters: If you use sed when working with, say, paths which contain / it can be a royal pain to escape them all so you can use any sensible delimiter that minimizes visual confusion for the expresssions. The following example illustrates the principle:
# use of / delimiter with a path containing / # replaces all occurences of /var/www/ with /var/local/www/ sed 's/\/var\/www\//\/var\/local\/www\//g' file > file.mod # functionally identical but less confusing using : as a 'sensible' delimiter sed 's:/var/www/:/var/local/www/:g' file > file.mod
Positioning with sed: sed documentation uses, IOHO, the confusing term address for what we call [position]. Positional expressions can optionally be placed before sed commands to position the execution of subsequent expressions/commands. Commands may take 1 or 2 positional expressions which may be line or text based. The following are simple examples:
# delete (subsitute with null) every occurrence of abc # in file only on lines starting with xyz (1 positional expression) sed '/^xyz/s/abc//g' file > file.mod # delete (subsitute with null) every occurrence of abc # only in lines 1 to 50 # 2 positional expression separated by comma sed '1,50s/abc//g' file > file.mod # delete (subsitute with null) every occurrence of abc # except lines 1 - 50 # 2 positional expression separated by comma sed '1,50!s/abc//g' file > file.mod # delete (subsitute with null) every occurrence of abc # between lines containing aaa and xxx # 2 positional expression separated by comma sed '/aaa/,/xxx/s/abc//g' file > file.mod # delete first 50 lines of file # 2 positional expression separated by comma sed '1,50d' file > file.mod # leave first 50 lines of file - delete all others # 2 positional expression separated by comma sed '1,50!d' file > file.mod
when to use -e: you can use -e (indicating sed commands) with any search expression but when you have multiple command sequences you must use -e. The following are functionality identical:
# delete (substitute with null) every occurrence of width="x" in file sed 's/width=\"[0-9.%]*\"//g' file.html > file.mod sed -e 's/width=\"[0-9.%]*\"//g' file.html > file.mod
Strip HTML tags: Regular expressions take the longest match and therefore when stripping HTML tags may not yield the desired result:
# target line <b>I</b> want you to <i>get</i> lost. # this command finds the first < and last > on line sed 's/<.*>//g' file.html # and yields lost. # instead delimit each < with > sed 's/<[^>]*>//g' file.html # yields I want you to get lost. # finally to allow for multi-line tags you must use # following (attributed to S.G Ravenhall) sed -e :aloop -e 's/<[^>]*>//g;/</N;//bloop' [see explantion below]
labels, branching and multiple commands: sed allows mutiple commands on a single line separated by semi-colons (;) and the definition of labels to allow branching (looping) within commands. The following example illustrates these features:
# this sequence strips html tags including multi-line ones sed -e :aloop -e 's/<[^>]*>//g;/</N;//bloop' # Explanation: # -e :aloop consists of :a which creates a label followed by its name # in this case 'loop' that can be branched to by a later command # next -e s/<[^>]*>//g; removes tags on a single line and # the ; terminates this command when the current line is exhausted. # At this point the line buffer (called the search space) holds the # current line text with any transformations applied, so <> # sequences within the line have been removed from the search space. # However we may have either an < or no < left in the current # search space which is then processed by the next command which is: # /</N; which is a positioning command looking for < # in any remaining part of the search space. If < is found, the N # adds a NL char to the search space (a delimiter) and tells sed # to ADD the next line in the file to the search space, control # then passes to the next command. # If < was NOT found the search buffer is cleared (output normally) # and a new line read into the search space as normal. Then control # passes to the next command, which is: # //bloop which comprises // = do nothing, b = branch to and loop # which is the label to which we will branch and was created # with -e :aloop. This simply restarts the sequence with EITHER just # the next line of input (no < was left in the search space) # or with the next line ADDED to the search space (there was a < # left in the search space but no corresponding >) # all pretty obvious really!
adding line numbers to files: Sometimes it's incredibly useful to be able to find the line number within a file, say, to match up with error messages for example a parser outputs the message 'error at line 327'. The following adds a line number followed by a single space to each line in file:
# add the line number followed by space to every line in file sed = file|sed 's/\n/ /' > file.lineno # the first pass (sed = file) creates a line number and # terminates it with \n (creating a new line) # the second piped pass (sed 's/\n/ /') substitutes a space # for \n making a single line
Note: We got email asking why the above does not also remove the real end of line (EOL) as well. OK. When any data is read into the buffer for processing the EOL is removed (and appended again only if written to a file). The line number created by the first command is pre-pended (with an EOL to force a new line if written to file) to the processing buffer and the whole lot piped to the second command and thus is the only EOL found.
Problems, comments, suggestions, corrections (including broken links) or something to add? Please take the time from a busy life to 'mail us' (at top of screen), the webmaster (below) or info-support at zytrax. You will have a warm inner glow for the rest of the day.
Tech Stuff
If you are happy it's OK - but your browser is giving a less than optimal experience on our site. You could, at no charge, upgrade to a W3C standards compliant browser such as Firefox
HTML Stuff
HTML4 vs HTML5
HTML5 Reference
W3C Page Validator
CSS Stuff
Default Styles
CSS3 Selectors
CSS 3 Media Queries
CSS 3 Colors
DOM Stuff
W3C DOM 3 Core
W3C 3 Events
Web Style Guide
Useful Stuff
Peter-Paul Koch
A List Apart
Eric Meyer on CSS
Our Stuff
Our DOM Pages
DOM Navigation
Liquid Layout
CSS Short Cuts
CSS overview
CSS One Page
Javascript Stuff
Copyright © 1994 - 2024 ZyTrax, Inc. All rights reserved. Legal and Privacy |
site by zytrax hosted by javapipe.com |
web-master at zytrax Page modified: January 20 2022. |


text:
Pneumatic cylinders and actuators accessories are key components used for the maintenance, repair and replacement of pneumatic cylinders and actuators. These components can include piston rods, rod clevis, brackets, mounting equipment and locking nuts. Cylinders and actuators can also be mounted in several ways depending on the size and type of cylinder or actuator being used. Mounting types can include flange mounts and foot mounts.
RS offer a wide range of accessories that can affect the overall system performance, reliability and design of pneumatic cylinders and actuators. Our accessories are efficient and made from high quality materials to support all your applications.
Replacement parts - including rotary joints to prevent sticking and values.
Cylinder repair kits - comprehensive hydraulic repair kits contain items like wiper rings, packing assemblies, bearing rings, piston bearings, wave springs, set screws, and nylon balls. Specific sealing repair products are also available as bearing kits to use as support for piston rods. Pneumatic repair kits contains replacement parts for compact cylinders, and include combinations of bore, piston, tube and cushion seals.
Mounting equipment - versatile mounting options, styles can be fixed centerline mount, fixed offset mount and fixed pivot mount. We have a range of mounting accessory types suitable for various applications.
Lock units and nuts - including corrosion resistant nuts and bolts
These kits are used to repair and carry out maintenance on hydraulic and pneumatic cylinders. Hydraulic cylinders are used in cranes, booms and for lifting and transporting loads. They are also found in presses and packing machines, as well as mobile equipment like construction vehicles or agricultural machinery. Pneumatic cylinders are used in packaging machinery, automation equipment and chemical handling applications.

subset: commoncrawl


text:
« Prev | To Mauricius Augustus. | Next » |
174bEpistle XXX.
To Mauricius Augustus.
Gregory to Mauricius, &c.
The Piety of my Lords, which has been wont mercifully to sustain your servants, has shone forth here in so kind a supply that the need of all the feeble has been relieved by the succour of your bounty. On this account we all with prayers and tears beseech Almighty God, who has moved the heart of your Clemency to do this thing, that He would preserve the empire of our Lords safe in His unfailing love, and by the aid of His own majesty extend their victories in all nations. The thirty pounds of gold which my fellow-servant Busa brought, Scribo15991599 Or Scribo may be the official designation of the officer commissioned to distribute the imperial bounty. Cf. II. 32, note 7. has distributed faithfully to priests, persons in need, and others. And, since certain females devoted to a religious life (sanctimoniales fœminæ) have come to this city from divers provinces, having fled hither after captivity, of whom some, so far as there was room for them, have been placed in monasteries, but others, who could not be taken in, lead a life of singular destitution, it has been thought good that what could be spared from the relief of the blind, maimed and feeble should be distributed to them, so that not only needy natives, but also strangers who arrive here, might receive of the compassion of our Lords. Hence it has been brought about that all alike with one accord pray for the life of our lords, that so Almighty God may give you a long and quiet life, and grant to the most happy offspring of your Piety to flourish long in the Roman republic. The pay also of the soldiers has been so distributed by my aforesaid fellow-servant Scribo16001600 Or Scribo may be the official designation of the officer commissioned to distribute the imperial bounty. Cf. II. 32, note 7., in the presence also of the glorious Castus, magister militum, that all received with thanks the gifts of our lords under due discipline, and abstained from all murmuring such as was formerly wont to prevail among them.
« Prev | To Mauricius Augustus. | Next » |


text:
CT Solutions
The LG Electronics N4B1 is a network-attached storage device with a built-in Blu-raywriter, offering advanced data management with data archiving and automatic disk backupfeatures. The drive has up to 4TB of storage through four-bay configurations; the Blu-raywriter serves as a secondary storage medium, with each disk holding between 25 and 50GB. When data are saved to the Blu-ray disk, the N4B1 automatically creates a catalog ofthe disk's contents for easier archiving. The N4B1 is compatible with Windows,Linux, and Mac operating systems. Contact vendor for pricing.
ViewSonic's PJ359w projector is designed specifically to be compatible withwidescreen applications. A brightness of 2,000 lumens and 1280 x 800 WXGAresolution help create crisp, detailed images in any lighting situation. Weighing in atunder 4 pounds, the projector boasts a slim design and easy adaptation to various projection environments.The PJ359w's short-throw lens enables a screen size of 50 inches to be projected from just 5.2 feet. A direct-off modeallows the device to be unplugged and stored while bypassing the usual cool-down phase, a feature that also protectslamp life from sudden power blackout. Contact vendor for pricing.
The Xpack Internet Computer from Moderro Technologies is a turnkey web-centric cloudcomputer targeted for use in campus and training facilities, kiosks, and libraries. With anoperating system written by Moderro specifically for interacting with web-based applications,the Xpack includes a USB keyboard, mouse, and standard VESA mount option,which allows the hardware enclosure to be mounted to the back of an LCD display.Power-saving technology and software-driven power-management functions make the Xpack's energy consumption afraction of that of a regular computer. The device is a solid-state computer with no moving parts, ensuring reliability, andhas no local storage (users keep their data on Moderro's integrated cloud storage, or on a personal USB storage device),helping to protect the system from viruses and other malware. Prices start at $395.


text:
In most cases, if you have no dependents and have enough money to pay your final expenses, you don't need any life insurance.
If you want to create an inheritance or make a charitable contribution, buy enough life insurance to achieve those goals.
If you have dependents, buy enough life insurance so that, when combined with other sources of income, it will replace the income you now generate for them, plus enough to offset any additional expenses they will incur to replace services you provide (for a simple example, if you do your own taxes, the survivors might have to hire a professional tax preparer). Also, your family might need extra money to make some changes after you die. For example, they may want to relocate, or your spouse may need to go back to school to be in a better position to help support the family.
You should also plan to replace "hidden income" that would be lost at death. Hidden income is income that you receive through your employment but that isn't part of your gross wages. It includes things like your employer's subsidy of your health insurance premium, the matching contribution to your 401(k) plan, and many other "perks," large and small. This is an often-overlooked insurance need: the cost of replacing just your health insurance and retirement contributions could be the equivalent of $2,000 per month or more.
Of course, you should also plan for expenses that arise at death. These include the funeral costs, taxes and administrative costs associated with "winding up" an estate and passing property to heirs. At a minimum, plan for $15,000.
Other sources of income
Most families have some sources of post-death income besides life insurance. The most common source is Social Security survivors' benefits.
Social Security survivors' benefits can be substantial. For example, for a 35-year-old person who was earning a $36,000 salary at death, maximum Social Security survivors' monthly income benefits for a spouse and two children under age 18 could be about $2,400 per month, and this amount would increase each year to match inflation. (It drops slightly when the survivors are a spouse and one child under 18, and stops completely when there are no children under 18. Also, the surviving spouse's benefit would be reduced if he or she earns income over a certain limit.)
Many also have life insurance through an employer plan, and some from another affiliation, such as through an association they belong to or a credit card. If you have a vested pension benefit, it might have a death component. Although these sources might provide a lot of income, they rarely provide enough. And it probably isn't wise to count on death benefits that are connected with a particular job, since you might die after switching to a different job, or while you are unemployed.
A multiple of salary?
Many pundits recommend buying life insurance equal to a multiple of your salary. For example, one financial advice columnist recommends buying insurance equal to 20 times your salary before taxes. She chose 20 because, if the benefit is invested in bonds that pay 5 percent interest, it would produce an amount equal to your salary at death, so the survivors could live off the interest and wouldn't have to "invade" the principal.
However, this simplistic formula implicitly assumes no inflation and assumes that one could assemble a bond portfolio that, after expenses, would provide a 5 percent interest stream every year. But assuming inflation is 3 percent per year, the purchasing power of a gross income of $50,000 would drop to about $38,300 in the 10th year. To avoid this income drop-off, the survivors would have to "invade" the principal each year. And if they did, they would run out of money in the 16th year.
The "multiple of salary" approach also ignores other sources of income, such as those mentioned previously.
A simple example
Suppose a surviving spouse didn't work and had two children, ages 4 and 1, in her care. Suppose her deceased husband earned $36,000 at death and was covered by Social Security but had no other death benefits or life insurance. Assume the surviving spouse is 36.
Assume that the deceased spent $6,000 from income on his own living expenses and the cost of working. Assume, for simplicity, that the deceased performed services for the family (such as property maintenance, income tax and other financial management, and occasional child care) for which the survivors will need to pay $6,000 per year. Assume that the survivors will have to buy health insurance to replace the coverage the deceased had at work, and that this will cost $12,000 per year.
Taken together, the survivors will need to replace the equivalent of $48,000 of income, adjusted each year for an assumed 4 percent inflation.
Thanks to Social Security, the survivors would need life insurance to replace only about $1,700 per month of lost wage income (adjusted for inflation) for 14 years until the older child reaches 18; Social Security would provide the rest. The survivors would need life insurance to replace about $2,100 per month (adjusted for inflation) for three more years when the non-working surviving spouse has only one child under 18 in her care.
The life insurance amount needed today to provide the $1,700 and $2,100 monthly amounts is roughly $360,000. Adding $15,000 for funeral and other final expenses brings the minimum life insurance needed for the example to $375,000.
What's left out?
The example leaves out some potentially significant unmet financial needs, such as
- The surviving spouse will have no income from Social Security from age 53 until 60 unless the deceased buys additional life insurance to cover this period. It could be assumed that the surviving spouse will obtain a job at or before this time, but she could also become disabled or otherwise unable to work. If life insurance were bought for this period, the additional amount of insurance needed would be about $335,000.
- Some people like to plan to use life insurance to pay off the home mortgage at the primary income earner's death, so that the survivors are less likely to face the threat of losing their home. If life insurance were bought for this goal, the additional amount of insurance needed is the amount of the unpaid balance on the mortgage.
- Some people like to provide money to pay to send their children to college out of their life insurance. We may assume that each child will attend a public college for four years and will need $15,000 per year. However, college costs have been rising faster than inflation for many decades, and this trend is unlikely to slow down. If life insurance were bought for this goal, the additional amount of insurance needed would be about $200,000.
- In the example, no money is planned for the surviving spouse's retirement, except for what the spouse would be entitled to receive from Social Security (about $1,200 per month). It could be assumed that the surviving spouse will obtain a job and will either participate in an employer's retirement plan or save with an IRA, but she could also become disabled or otherwise unable to work. If life insurance were bought to provide the equivalent of $4000 per month starting at age 60 until 65 and $3,000 per month from 65 on (because at 65 Medicare will make carrying private health insurance unnecessary), the additional amount of insurance needed would be about $465,000.


text:
61 Hours: A Jack Reacher Novel (Large Print / Paperback)
"Reacher gets better and better. . . . [This is the] craftiest and most highly evolved of Lee Child's electrifying Reacher books."—Janet Maslin, The New York Times
A bus crashes in a savage snowstorm and lands Jack Reacher in the middle of a deadly confrontation. In nearby Bolton, South Dakota, one brave woman is standing up for justice in a small town threatened by sinister forces. If she's going to live long enough to testify, she'll need help. Because a killer is coming to Bolton, a coldly proficient assassin who never misses.
Reacher's original plan was to keep on moving. But the next 61 hours will change everything. The secrets are deadlier and his enemies are stronger than he could have guessed—but so is the woman he'll risk his life to save.
"[The] craftiest and most highly evolved of Lee Child's electrifying Jack Reacher books… The truth about Reacher gets better and better." —The New York Times
"Child is a superb craftsman of suspense, juggling several plots and keeping his herrings well-rouged….Best of all, this is a rare series book that reads like a stand-alone. Everything you need to know about Jack Reacher is contained within its pages. And chances are you'll want to seek out other Reacher adventures the moment you finish." —Entertainment Weekly (A-)
"Jack Reacher is much more like the heir to the Op and Marlowe than Spenser ever was." —Esquire
"As usual, Child's writing is superb. Not only is this thriller believable, but the descriptions of the blizzard will make readers want to hug their furnaces. Fast paced and exciting, this is highly recommended for thriller fans." —Library Journal (starred review)
"Get prepared for teeth-chattering suspense….Child sets up one of his most ingenious plots in the Jack Reacher chronicles. A fiery finale will leave fans talking and speculating for weeks to come." —Madison County Herald
"Child deepens the mystery considerably, providing an explosive climax that will have you tearing out your hair until Reacher's next appearance." —Miami Herald
"Once again, Child spins a riveting, ticking-clock Jack Reacher adventure….It's guarantees you'll finish this one in less than 61 hours—and the jolter conclusion will shock and awe you." —Romantic Times Book Review
"Implausible, irresistible Reacher remains just about the best butt-kicker in thriller-lit." —Kirkus Reviews (starred review)
"Child keeps his foot hard on the throttle...As always, Child delivers enough juicy details about the landscape, the characters, and Reacher's idiosyncrasies to give the story texture and lower our pulse rates, if only momentarily...This is Child in top form, but isn't he always?" —Booklist (starred review)


text:
Now that 'White Friendship' and 'White Goddess' have gone commercially extinct, we're happier than ever to have this snowy-white Depression-era beauty with its intriguing pink anthers. One of the oldest traditional glads we've ever offered, it was a florists' favorite for decades and long praised as "sturdy," "stately," and "exquisite." 4½ feet tall, from Maine. |
TYPE traditional SUB TYPE traditional, American ZONES 8a-9b(10bWC) HEIGHT 48" SOURCE Maine, America LIGHT full sun |
PLANTING & CAREPlant after danger of frost is past — when you'd plant tomatoes. Glads planted in cold soils may rot. Open the bags and store till then in a cool, dim, dry place. 45-55° F is ideal, but close will do. For a succession of bloom, follow old-time advice and soak some corms before planting to speed them into growth and bloom. Or plant a few every week or two till the end of early summer (for example, late June in zone 5). Don't wait too late, though, because some heirlooms need a longer season than many modern glads to bloom. Pick a sunny site. Glads are easy and adaptable, but loose, fertile, well-drained soil with a pH of 6.5 to 6.8 is ideal for them. Avoid heavy soils that stay wet. Plant 4-6 inches apart and 2-6 inches deep, the side with the round indentation in the middle facing down. Shallow planting gives the corms warmer soil to spur growth but it may lead to a need for staking. To help avoid this, mound soil 2-3 inches around the base of the stalk later, before bloom. Water once, but then unless it's very dry, wait till growth emerges before beginning to water regularly and deeply enough to reach the corm. Expert glad-growers often recommend mulching to maintain more even moisture. Fertilize when growth begins and again after cutting flowers, ideally with a liquid fertilizer. Don't overdo it, though. Too little is better than too much. THRIPS are one of the few pests that bother glads. They're almost invisible but they can be devastating. To learn more, click here. WINTER CARE — In zones 8 and warmer (lows to 10° F), glads can stay in the ground year round. They often survive winters in zones 7, 6, and even 5, too, according to many of our customers. Learn more at our Surprisingly Hardy Glads page. Otherwise, glads are one of the easiest bulbs to store (if you want to). Dig 5-6 weeks after flowering or at killing frost. Cut stalk off as close to the corm as possible. Experts often recommend a 5-minute fungicide dip, or you can dust them with an insecticide-fungicide, or do nothing. Air dry for a few weeks. Store loose or in mesh bags in a cool, dry place with good air circulation, ideally at 35-45° F. In spring, break off the old, shriveled corm at the base of each new one. CORMLETS bigger than a pea may bloom the next year, and smaller ones in two. Plant cormlets 1-2 inches deep and 1-2 inches apart, depending on size. Immediately before planting, nick, gently crack, or dissolve hard outer coats by soaking in bleach for a few hours. Learn more. Learn more about growing and enjoying glads at our Gladiolus Newsletter Archives and Bulbs as Cut-Flowers page. |


text:
This original mixed media painting is comprised of layers of acrylic paints, authentic agricultural inspired vintage ephemera and my photography of cows peacefully grazing with the exception of one who has become suspect. A vintage inspired piece of contemporary Western art.
Specifications:• artwork measures 6"x6" set within a 7"x7"x1.5" natural wood floating/strip frame• art is signed; backside is titled, signed and comes with artist info• sealed with UV protective matte varnish• wired and ready to hang or can easily stand on shelf
This piece is available for purchase from Convergence Gallery on Canyon Road in Santa Fe, New Mexico, 505.986.1245, http://convergencegallery.com/jcs/jcs.htmlRoom views may not be to scale and colors may vary from monitor to monitor.
© J.C. Spock - All rights reserved.
Rustic | Historic | NostalgicArt that speaks to a bygone era and simpler times.


text:
Eddie McGuire
"Good old Collingwoood forever"
"Oh no, Eddie fell over."
"It's okay, He landed on his wallet."
"Anyone notice how the other quotes make it seem like Eddie is in a gay orgy?"
"Bucks? Bucks? Hey, there's room in here for two. "
Eddie McGuire (known in the industry as Eddie McEverywhere) is the name of a virus released by Kerry Packer that has infected every single show on the Eddie McGuire Television Service. Eddie currently presents Today in the morning and National Nine News every evening, after which he hosts A Current Affair, (also known as "That Show That's Not Today Tonight"). Later in the evening Eddie appears on Nightline.
A little known fact is that he also appears in the majority of the Guthy-Renker infomercials no one watches. That's right, for just 4,999 easy payments of $49.99 you could have beautiful, clear skin just like Eddie's!
Early Years[edit | edit source]
Eddie was created by Kerry Packer back when Channel 9 had yet to become the terrifying cult that it is today. Eddie made his first appearance on Australian television in Sydney on September 16, 1956, when he announced "Good evening, and welcome to television." Since then he has shown no sign of slowing down. The next year Eddie hosted In Melbourne Tonight with Graham "The King" Kennedy and Bert "The Queen Consort" Newton.
Eddie has hosted 60 Minutes every Sunday night since 1979, making him the record holder for the most minutes ever hosted.
The Virus Spreads[edit | edit source]
In 1994, Eddie began hosting The Footy Show, which covers AFL, NRL, and any other three-letter games that are popular at the time. Eddie has also appeared on Australia's Funniest Home Video Show since 1990, which is quite similar to The Footy Show. These days Eddie likes to host the show in a dress.
Two years later Eddie began hosting Getaway, although he doesn't really get away, since he rarely leaves Nine's Studios, except to make appearances in the background of Channel 7 show Sunrise (doesn't everyone?). Eddie is also the presenter of the Australian comedy version of Who Wants to be a Millionaire, in which people pretend that they don't know the answers to the simple questions asked.
Personal Life[edit | edit source]
Eddie is believed to be a long lost member of the Packer family, although some claim he isn't evil enough.
In 2000, Eddie began hosting a new show, Backyard Blitz, which eventually became Domestic Blitz. Eddie was charged for this but later let off, using the well known "but I'm an Australian media personality!" defence previously perfected by members of The Chaser. Eddie has also been known to get into violent brawls with Sunrise's David Koch. However, he has never been charged for this, because no one likes Kochie.
2010 Brownlow Medal[edit | edit source]
Eddie will probably be best known for his priceless reaction at the 2010 Brownlow Medal on finding out that Dane Swan did not win. He cried for 10 hours on end after going home in a bad way.


text:
As Facebook is becoming the world's biggest social network , your FB account also becomes more and more functional – you can use it to log into many application or to register to other services.
However, it is this convenience that may bring unexpected trouble if you don't carefully manage your account. Hackers can use breached Facebook accounts to access many different sites through automatic logins. What's more, you can become a victim of identity theft, as your personal information may be collected and sold.
A simple check to know if your Facebook account is still safe
If you suspect your account has been hacked or taken over by someone, you can follow the steps below to make a quick check.
1. Click the inverted triangle button in the upper-right corner of your Facebook Page. Choose Settings in the menu.
2. Choose Security and Where You're Logged In.
3. In this sector you can see a list showing where and from which devices you've logged into.
If there are any logins you cannot recognize, you may need to further check You can click End Activity to first log out this session. If your account is unfortunately taken over, this step helps you stop the hacker from accessing your account temporarily before you take further action.
Facebook also provides some possible scenarios for users as hints of a hacked account:
▪ Your email or password has been changed
▪ Your name or birthday has been changed
▪ Friend requests have been sent to people you don't know
▪ Messages that you didn't write have been sent
▪ Posts have been published but you didn't create them
What should you do if your FB account is hacked?
After checking your Activity log and delete unwanted login actions, it is highly recommended to change your password. Then, visit Facebook Help Center Page, find the sector 'I think my account was hacked or someone is using it without my permission', and click 'secure it'. Facebook will give you further instructions to help you take back your account.
Security tips to enhance your account security
There are some precautions you can take to keep your account safe.
1. Carefully manage your account
Create a strong password for your accounts. Do NOT reuse this password in any other account, including Facebook, Google, and many other service. And never share your password with anyone else.
Also, if you are not using your own devices, always remember to log out after finishing the connection. If you forget to do so, Facebook also supports remote logout.
2. Enable additional security features
Many services have provided a two-step verification. This feature offers an extra layer of protection. In addition to the account password, one is required to enter a verification code to log in.
3. Use other security service
It is suggested to run other security software or applications for your PC. An anti-virus program can not only stop attackers from hacking into your PC, but also send you timely alerts when detecting suspicious activities. A VPN service encrypts data transmitted from your device to the receiver's, preventing snoopers and identity thieves from stealing personal information, including account details, banking information, and other credentials.
Learn more about 360 Total Security


text:
Shopping for groceries can be a hassle for many busy families. You need to make the time to go to the store, make sure you find everything on our list (and a few things that likely weren't), lug them home and then put them away. Sometimes this can be a fun trip, but more often, you're either pressed for time or, worst of all, can't make the trip, leaving you with an empty fridge that has you munching on unhealthy snacks, instead of our typical fresh fruit, vegetables and yogurt.
Also read, Walmart Canada removes pickup fee for online grocery shoppers. What if Walmart could help busy families like yours ensure the fridge was always well-stocked? What if Walmart created a service that not only did your grocery shopping and brought everything to your home, but even went so far as to put it directly into your fridge? And, what if it was even more convenient because this "in-fridge delivery" happened while you are at work or off doing other things? In setting out to solve this challenge, Walmart announced they are testing new delivery ideas with companies like August Home. As one of the leading providers of smart locks and smart home accessories, they're a great partner to test these new concepts, like delivering packages inside customers' homes and putting groceries away in their refrigerators. Here's how the test will work: You place an order on Walmart.com for several items, even groceries. When my order is ready, a Deliv driver will retrieve the items and bring them to your home. If no one answers the doorbell, he or she will have a one-time passcode that will open the home's smart lock. As the homeowner, you're in control of the experience the entire time – the moment the Deliv driver rings the doorbell, the homeowner receive a smartphone notification that the delivery is occurring and, if you choose, you can watch the delivery take place in real-time. The Deliv associate will drop off the packages in my foyer and then carry your groceries to the kitchen, unload them in the fridge and leave. Customers can watch the entire process from start to finish from their home security cameras through the August app. As once the Deliv associate exit your front door, customers will receive confirmation that the door has automatically been locked. When you enter your house later that day, it's like magic– the items purchased from Walmart.com are waiting for you, and the groceries are nice and cool in the fridge, as if they never left their display in the store. And the best part is that you didn't have to unpack anything. Think about that – someone else does the shopping for you and puts it all away. Clearly this adds more convenience to the day-to-day, but it makes the unexpected easier, too. Imagine planning a last-minute get-together and having everything you need to entertain already waiting for you inside your fridge. Or maybe you think during lunch at work that you'd like to surprise your spouse by making dinner, but don't have time to run to the store. In the future, you could order on Walmart.com and start cooking minutes after you walk through the door. Walmart is running this test in Silicon Valley with a small group of August Home customers, all of whom have opted-in to participate in testing this new concept. Walmart also said they want to do more in the future by delivering groceries and other orders in whatever location works best for customers – inside the house for some and in the fridge/freezer in the garage for others. The possibilities are endless. These tests are a natural evolution of what Walmart is all about – an obsession in saving customers not just money but also time, making customers' lives easier in the process. What might seem novel today could be the standard tomorrow. This may not be for everyone – and certainly not right away – but Walmart wants to offer customers the opportunity to participate in tests that will help shape what commerce will look like in the future. SOURCE Sloan Eddleston, Walmart Leave a Reply. |
News & Updates
Stay informed with the latest news around foodservice, agriculture and other related food news. Advertisement Opportunities


text:
EL PASO, Texas (AP) — Crossing borders is a part of life in El Paso in far West Texas, where people may walk into Mexico to visit family or commute to New Mexico for work. But getting an abortion doesn't require leaving town.
That could change if a federal judge upholds new Texas rules that would ban abortions at 18 clinics starting Sept. 1, including only one that offers the procedure in El Paso, where one of the toughest anti-abortion laws in the U.S. has come under particular scrutiny at a trial ending Wednesday in Austin.
Without any abortion providers in El Paso, women there would face a 550-mile trip to the nearest place in Texas to legally terminate a pregnancy. Attorneys for the state point out that women wouldn't really have to drive that far: They could simply go to a clinic 15 minutes away in Santa Teresa, New Mexico.
Opponents of the new rules say that argument shows the goal isn't to protect women, as supporters contend. New Mexico – which one anti-abortion group mocks as the "anything goes" Wild West of abortion access – does not require the same new standards that Republican Gov. Rick Perry approved in 2013 in the name of protecting women's health. It also doesn't require the pre-abortion sonograms that Texas began mandating in 2012.
"It's hypocritical to say they want to protect women, to say that they want women to have a safe abortion and then take away the clinics and make the women go to another state. How do you care about the women of Texas? They don't care," said Gerri Laster, who ran what had been a second abortion clinic in El Paso before it closed in June because of other new mandates.
U.S. District Judge Lee Yeakel is not expected to immediately issue a ruling after closing arguments Wednesday, but he'll be on a tight timeline.
The law would leave just seven abortion facilities in Texas, all of which would be in major cities and none in the western half of the nation's second-largest state.
The seven facilities that will remain already have operating rooms, sterile ventilation systems and other hospital-style standards that abortion providers are required to meet under the new Texas law. Outraged abortion clinic owners say they can't afford to make those upgrades, which they criticize as unnecessary.
But one notable clinic isn't in a fury: the last one left in El Paso.
That's partly because the company behind Hilltop Women's Reproductive Clinic also owns the one in Santa Teresa. Gloria Martinez, the administrative nurse at the El Paso clinic, said that office will say open and simply refer women across state lines for the procedure.
Martinez said business has dropped the past four years. As the trial got underway in Austin last week, very few women came through the doors.
"You don't see the phone ringing off the hook," Martinez said.
Nearly 2,200 abortions were performed in El Paso in 2011 – about 3.1 percent of all abortions in Texas that year. State attorneys pointed that out in court while making the case that nearly 9 of every 10 women in Texas will still live within 150 miles of an abortion provider.
Texas is proposing that New Mexico is an option for El Paso women, even after a federal judge in Mississippi ruled last month that a state can't shift obligations on constitutional rights – in this case, abortion access – to its neighbors. Texas says its situation isn't comparable to Mississippi because, unlike there, the law wouldn't remove all abortion services in the state.
"At most, some patients may choose to travel out of state for convenience," the state wrote in court documents.
Laster said closing her clinic, Reproductive Services El Paso, removed the city's only abortion provider that gave women financial assistance for a procedure that costs around $530. Abortion providers say if they're lucky, the border women choose to cross will be into New Mexico – and not into Mexico to buy drugs that allow them to undergo dangerous self-abortions.
"It's not as easy as the Legislature makes it look," Laster said.


text:
It is always comforting to see that the website you just accessed is available in your language. Well, MusicMegaBox.net (you can read more about this music service here) is proud to release its French and German versions. While it may not be a problem to look for the music you like in English, which is a universal language, used on every website available on the Internet, using your own language means accessing a greater variety of details. You will know the meaning of every word on the website and you will certainly find what you're looking for a lot faster. So now you can "ecouter musique gratuite en ligne" or "Kostenlose Musik hören online", picking the one that is your native language.
MusicMegaBox allows its users to listen to hundreds of thousands of songs, entirely free, so it is definitely the place you need to be if you want to create a playlist with your preferred songs. Now, you can search for your favorite music in your own language, regardless if it is French or German, because the platform decided that it was time to add more language versions to its loyal users. If you know what you want to listen, that's great, but if you don't know that yet or you would like to discover new songs, the platform provides an impressive songs database. You will also find music here sorted conveniently in categories, like music to listen in the car, or music for performing sports, music for parties, music for relaxation, and so on.
After all, the goal of the MusicMegaBox platform is to provide a much improved experience to all the users that wish to enjoy great music. Thus, it is easy to explain why the platform launched these two language versions. It is very likely that the platform will be available in other languages as well in the future. Until then, you can select either French or German, or opt for the classical English version to find your favorite songs. It is worth noting that here you will find a top 100 best songs, plus opportunities like creating your playlist with the songs you enjoy the most and the chance to listen to the playlists created by other users, maybe your friends or others. Also, each song will come with its lyrics, so you won't have to look anywhere else for the things you need, including the lyrics of your favorite songs.
So, are you ready to enjoy MusicMegaBox.net in your native language? Then take advantage of the official launch of the French and German versions and start browsing for the music you prefer. Now the site will be friendlier and your experience on the site will be much improved. The main mission of the platform was to allow users to have a great time while using its services, listening to music, and look for information in a fast and easy manner.


text:
"19:10, 13 March 2006 Sikon blocked "User:Writer" with an expiry time of infinite (Writer's Block)"
A writer is someone who can't be bothered going to work, and instead sits at home all day drinking coffee and smoking cigarettes, scribbling down pointless and uninteresting strings of disjointed words. Some substitute cigarettes for a chocolate bar, though the use of coffee seems to remain a constant theme. Writers attempt to avoid contact with reality as much as possible, because facing the cold hard truth about their lack of worth only fills them with self-doubt and depresses them. Because of their promiscuous lifestyles, many writer's acquire a disease known as Writer's Block to which there is no cure. A fictionalized account of poor writer's living in New York with writer's block has been adapted into a musical called "Commission!" Their writings, often on the back of KitKat™ wrappers or Marlboro™ light cigarette packets commonly take the final shape of either a poem, a play, a novel, or a short story. An example of each is provided below:
Poetry[edit | edit source]
bum to it all
i'm going to die
i'm going to cut off my
head and fry it in garlic
fry fry fry
then you will all see that
i am not
alive anymore
"Garlic head Death", Sylvia Plath, 1886.
Poetry has been outlawed in Britain since after the First World War, when it was discovered that Wilfred Owen, a soldier for the British army, was gay. Poetry then went underground, often hiding in caves and plague pits, emerging only to terrorise commuters on dimly lit tube stations. One particularly famous incident involved Winston Churchill, who was once on his way home after a good night out on the piss, and was notoriously verbally-bashed by two haikus and three ophaned couplets written in iambic pentameter, skulking about the shadows in Liverpool Street station. It wasn't until the Poetry Wars of 1987 that poetry was not only decriminalised, but was elected King of England to reign for three successive terms. This period is often seen as the Golden Age of British Poetry, and gave rise to such famous works as Philip Larkin's "My Gran's a C*nt" and The Sex Pistols' "I just want to grow a Daffodil".
Other famous poetry writers include Julie Birchill, Mumm-Ra and Kevin Keegan. Some people think that Andrew Motion and Wendy Cope are poets, but these people probably spend most of their time dribbling and thinking that McDonalds burgers are actual food.
Play[edit | edit source]
Perhaps the most famous thing ever written by anyone (...ever!) was Hamlet, by William Shakespeare:
For sooth! Again my friends, someone hath died
Were it not my lying uncle - that uncle that lied
Erk, I've been poisoned, that's saved us some time
The bar is still open, hurry, it's closing time
This type of writing is known a play, which is a bit like a poem in that bits of it rhyme, only you've got slightly more idea what it's all about. Not all plays have to rhyme, and indeed many modern written plays are discouraged from rhyming, ever since Simon Callow threw a legendary sulk on stage after having to recite a limerick and stormed off in the middle of a dress rehearsal.
By law, all plays written now, including screenplays for movies or films, are required to feature either Hugh Grant if they are British, or James Woods if they are American and made in the 1980s.
Other famous playwrights include Michael Jackson, Sir Terry Wogan and Kevin Keegan.
Novels[edit | edit source]
Something else a writer might write is a novel. A novel is a very big amount of words that are always entirely true. Below is a classic example of a novel:
"Do you not like my hair," Ingladelle demanded of Dirk with a quizzical lilt to her voice.
"Why, of course!" Dirk ejaculated. "I find it advantageous! This hair is surely the best example of aristocracy I have seen!" She stared hard at him in the cold amber light of the nursery, the dim twinkle of the beads of dew dripping lovingly from the marijuana plants all around framing him in an accusing crowd.
"I don't believe you," she hissed. "You think my hair is rubbish don't you?"
"It's true!" he exploded.
She spent months picking his guts out of her hair.''
"The Fannytastic Merry-go-Round" (2035 Man Booker Prize winner), Charles Dickens.
Other famous novelists include Linda La Plante, Kitty Kelley and Kevin Keegan. J.K. Rowling was recently voted most successful novelist of all time, for her series of books for elderly people entitled "Help! Help! I have no idea what I'm doing!"
Novels have also been employed since 1798 as a means of punishing evil doers. Famous examples of punishment by novel include Charles Manson's being sentenced to 20 years reading Great Expectations, and Hannibal Lecter's enforced rewriting of Jane Austen's collected works, where each word ending with an exclamation mark must have the entire contents of the novel written immediately before inserted after it. Jane Austen was also employed as a form of torture by the Nazis in the Clone Wars.
Journaling[edit | edit source]
This is a part of writing that is beneficial to the mentally unsound. That includes everyone.
Meek, less assertive people (silent devil worshipers):
"Dear Satan, I promise to wear more black nail polish and eye liner if you kill that preppy, conceded, Hollister-wearing, pom-pom twirling cheerleader. PS. Good job with G. Bush. I don't know how you did it, but whatever it is with him is making the world slowly slip into a deep oblivion of darkness."
Hollister-wearing Cheerleader:
"Dear Diary, omg, like omg! I was at the mall with my BFF and we were at Starbucks buying fat-free, non-sugar, low-carb lattees and all of a sudden that really hot guy with the nice body came up to us and started talking to me. O...M...G... I was in total heaven when he asked for a sip of my drink! His ass was nice. Like super nice! Like NICE NICE. OMG OMG OMG OMG! And then he asked me out. Like on a date. And I said I'd have to think about it, cause I don't want to sound desperate. Like you know what I mean? Like yeah. But now I'm gunna call him and say yes! omg! I can't breath."
Short stories[edit | edit source]
There has not been a short story published in the world in over 60 years, following their extinction in the 1950s, hunted by poachers for their valuable adverbs. Two short stories, both by Roald Dahl, were released back into the wild in 1948 in the hope that they would repopulate the species. Sadly both disappeared without a trace. A short story is almost identical to a novel, but is much shorter, a lot less boring to read, and often has black stripes running across its hump. The last known short story to have existed was "Yes! There shall be a herb garden!" by George Best, published in Ireland in 1941. An extract follows:
"So den I went o'er der, and der was nattin der, so den I went o'er heer, and der was nattin heer, so den I went back o'er der, but der was still nattin der, so den I came back o'er heer, but der was still nattin heer. I would've gan back o'er der agin, boot ma feet was tired, so I had a nice sit down o'er heer."
This particular passage remains a firm favourite of noted celebrities such as Liz Windsor and Debbie Mcgee, with both claiming it has reduced them to tears in the past.
Some particularly noteworthy short story writers have included the entire cast of Saved By the Bell, Darth Vader, and Kevin Keegan.
Screenwriters[edit | edit source]
Throughout most of the twentieth century, there existed a race known as screenwriters. Their lot was to invent original stories for movies, to be misinterpreted by directors, actors, and audiences. Unfortunately, this unique group became fully extinct sometime around the end of the twentieth century.
Musicals[edit | edit source]
He's in my dreams
I want to scream
It's him I see,
I have to pee,
I see him there
I have to stare
Oh my goodness an Angina,
The Phantom is coming for my vagina
from The Phantom of the Musical (written by Tim Rice after his split with Andrew Lloyd Webber, demonstrating his musical mastery)
It was originally suggested that some writers create musicals, but this was proven to be false by Bruce Willis in a philosophy article written in the nineteenth century. Musicals are in fact, so perfect that writers could not create them. Only God can create musicals. All else is blasphemy.
Agents[edit | edit source]
Because all writers are mentally ill, they are closely monitored by the Government, and assigned a Government Agent to make sure they do not cause themselves injury. It is the job of each agent to coax the troubled writer from their malaise by a systematic programme of ignoring them, swiftly alternated with encouragement in their self delusion (the word 'agent' comes from the Latin word 'agentio', meaning "I will not return your calls and I will drink lots of tea"). Sometimes a writer will not see his or her agent for up to two decades, but this is perfectly normal.
Agents send things writers have written to people called Publishers. Publishers are jolly, fun loving souls, who who see no greater joy in life than making paper aeroplanes. Agents will often send paper from their writer to these publishers, who will write back to the agent to let them know if they want to make a paper aeroplane out of it. If they do, they then pay the writer to send them paper, which the writer decorates by writing all over it.