/\\\\(?:[a-zA-Z0-9]+\\)+[a-zA-Z0-9]+/
The regular expression:
(?-imsx:\\\\(?:[a-zA-Z0-9]+\\)+[a-zA-Z0-9]+)
matches as follows:
NODE EXPLANATION
----------------------------------------------------------------------
(?-imsx: group, but do not capture (case-sensitive)
(with ^ and $ matching normally) (with . not
matching \n) (matching whitespace and #
normally):
----------------------------------------------------------------------
\\ '\'
----------------------------------------------------------------------
\\ '\'
----------------------------------------------------------------------
(?: group, but do not capture (1 or more times
(matching the most amount possible)):
----------------------------------------------------------------------
[a-zA-Z0-9]+ any character of: 'a' to 'z', 'A' to
'Z', '0' to '9' (1 or more times
(matching the most amount possible))
----------------------------------------------------------------------
\\ '\'
----------------------------------------------------------------------
)+ end of grouping
----------------------------------------------------------------------
[a-zA-Z0-9]+ any character of: 'a' to 'z', 'A' to 'Z',
'0' to '9' (1 or more times (matching the
most amount possible))
----------------------------------------------------------------------
) end of grouping
----------------------------------------------------------------------
(With thanks to YAPE::Regex::Explain)
CountZero A program should be light and agile, its subroutines connected like a string of pearls. The spirit and intent of the program should be retained throughout. There should be neither too little or too much, neither needless loops nor useless variables, neither lack of structure nor overwhelming rigidity." - The Tao of Programming, 4.1 - Geoffrey James My blog: Imperial Deltronics
| [reply] [d/l] [select] |
This selects text that starts with a '\', followed by 'word' characters and/or backslashes.
Note the use of single-quotes for the parameters so that the backslashes are not consumed for escaping.
$ perl -e 'my $x=shift; print qq|$x\n|; print $x=~m/(\\[\\\w]+)/,qq|\n
+|' 'some \\text\with\backslashes and stuff'
some \\text\with\backslashes and stuff
\\text\with\backslashes
Note that the Microsoft UNC Naming convention allows spaces, and many characters - in fact, the LONG UNC REQUIRES '//?/', so the regex above will need editing. The best bet is to look for a terminating delimiter, for your use case.
All great truths begin as blasphemies.
― George Bernard Shaw, writer, Nobel laureate (1856-1950)
| [reply] [d/l] |
Your regex will also match a string like \\\\\\\\\\ which probably is not what is intended by the OP.
CountZero A program should be light and agile, its subroutines connected like a string of pearls. The spirit and intent of the program should be retained throughout. There should be neither too little or too much, neither needless loops nor useless variables, neither lack of structure nor overwhelming rigidity." - The Tao of Programming, 4.1 - Geoffrey James My blog: Imperial Deltronics
| [reply] [d/l] |
| [reply] |
Maybe it's not intended, but it certainly fits the specification given by the OP.
95% of the effort of finding a regexp is stating actual definition of what you want. If people spend half the time it takes to write down a Perlmonks question in actually formulating what they want, we'd see far less regexp questions here, and we'd need to do far less guessing of what the OP wants. Because if what is wanted isn't stated accurately, all that can be done is play the lottery, and guess what is wanted.
| [reply] |