Click here to Skip to main content
15,040,212 members
Home / Discussions / Regular Expressions
   

Regular Expressions

 
QuestionCan anybody explain how this Regex works. Pin
fiaolle15-Nov-11 2:26
Memberfiaolle15-Nov-11 2:26 
AnswerRe: Can anybody explain how this Regex works. Pin
PIEBALDconsult15-Nov-11 5:04
professionalPIEBALDconsult15-Nov-11 5:04 
GeneralRe: Can anybody explain how this Regex works. Pin
fiaolle15-Nov-11 6:08
Memberfiaolle15-Nov-11 6:08 
GeneralRe: Can anybody explain how this Regex works. Pin
PIEBALDconsult15-Nov-11 6:34
professionalPIEBALDconsult15-Nov-11 6:34 
GeneralRe: Can anybody explain how this Regex works. Pin
fiaolle15-Nov-11 6:45
Memberfiaolle15-Nov-11 6:45 
GeneralRe: Can anybody explain how this Regex works. Pin
PIEBALDconsult15-Nov-11 13:46
professionalPIEBALDconsult15-Nov-11 13:46 
GeneralRe: Can anybody explain how this Regex works. Pin
Andreas Gieriet8-Apr-12 1:02
professionalAndreas Gieriet8-Apr-12 1:02 
AnswerRe: Can anybody explain how this Regex works. Pin
Andreas Gieriet7-Apr-12 12:06
professionalAndreas Gieriet7-Apr-12 12:06 
See The 30 Minute Regex Tutorial and search for all occurances of (?<= in that article. This explains the meaning of (?<=...).

You have always to separate the way you enter a pattern in C# and the pattern the Regex sees:

C# @"..." pattern:@"(?<=^(?:[^""]*""[^""]*"")*[^""]*) "
effective Regex pattern (here delimited by /.../):/(?<=^(?:[^"]*"[^"]*")*[^"]*) /


I'm now only talking in Regex domain (the 2nd row), not how it is entered in the C# string.

Let's start with the inner most part and work outwards:


  1. ..."[^"]*"...: "..."
  2. ...[^"]*"[^"]*"...: any number of non-"-char, followed by "..." from 1. above
  3. ...(?:[^"]*"[^"]*")*...: any repetition of the group described in 2. above
  4. ...^(?:...)*...: 3. above must match from the beginning of the text
  5. ...^(?:...)*[^"]*...: 4. above, followed by any number of non-"-char
  6. (?<=...) : match a space that is preceeded by the expression from 5. above; the (?<=...) is not part of the match


The Regex searches for the space character and checks if the data before that space matches the prefix expression. If yes, the match is successful, otherwise, the Regex searches for the next space and checks again, etc.

The given Regex and the given data match only on one space, the one after all. The underlined part matches with all: (?<=^(?:[^"]*"[^"]*")*[^"]*) .

I.e. the regex splits the given data by spaces, respecting spaces within "..." strings as non-separators.

Very complicated, though. I would do this differently, namely in positive terms (what you want to be part of the fields rather than what splits them):

string pattern = @"\s*(""[^""]*""|\S+)\s*"; // maybe a more sophisticated pattern is
                                            // needed since the above expression seems
                                            // to match more,
                                            // but this is maybe an undesired side
                                            // effect of the complicated expression
string[] split = Regex.Matches(input, pattern).Cast<Match>().Select(m=>m.Groups[1].Value).ToArray();


Cheers
Andi

modified 8-Apr-12 7:03am.

QuestionUrl rewriting rule Pin
Gaurav Goel (Team Lead)13-Sep-11 0:18
professionalGaurav Goel (Team Lead)13-Sep-11 0:18 
AnswerRe: Url rewriting rule Pin
Shahriar Iqbal Chowdhury/Galib24-Sep-11 11:00
professionalShahriar Iqbal Chowdhury/Galib24-Sep-11 11:00 
AnswerRe: Url rewriting rule Pin
AspDotNetDev24-Sep-11 11:37
protectorAspDotNetDev24-Sep-11 11:37 
QuestionRegular expression to check special character Pin
sri_34648-Sep-11 11:16
Membersri_34648-Sep-11 11:16 
AnswerRe: Regular expression to check special character Pin
Mizard X25-Sep-11 0:06
MemberMizard X25-Sep-11 0:06 
QuestionHelp with pattern Pin
Phrone7-Sep-11 20:25
MemberPhrone7-Sep-11 20:25 
AnswerRe: Help with pattern Pin
thatraja28-Nov-11 19:10
professionalthatraja28-Nov-11 19:10 
QuestionWhat is the Regular expression that detects a $ sign and digits in html code Pin
Member 82168286-Sep-11 7:49
MemberMember 82168286-Sep-11 7:49 
AnswerRe: What is the Regular expression that detects a $ sign and digits in html code [modified] Pin
Paladin20006-Sep-11 10:54
MemberPaladin20006-Sep-11 10:54 
GeneralRe: What is the Regular expression that detects a $ sign and digits in html code Pin
Member 82168287-Sep-11 5:20
MemberMember 82168287-Sep-11 5:20 
GeneralRe: What is the Regular expression that detects a $ sign and digits in html code Pin
Paladin20007-Sep-11 5:27
MemberPaladin20007-Sep-11 5:27 
GeneralRe: What is the Regular expression that detects a $ sign and digits in html code Pin
Member 82168287-Sep-11 8:48
MemberMember 82168287-Sep-11 8:48 
GeneralRe: What is the Regular expression that detects a $ sign and digits in html code Pin
Pete O'Hanlon7-Sep-11 5:38
mvePete O'Hanlon7-Sep-11 5:38 
AnswerRe: What is the Regular expression that detects a $ sign and digits in html code Pin
jschell7-Sep-11 8:32
Memberjschell7-Sep-11 8:32 
QuestionRegular Expression Pin
Morgs Morgan11-Jul-11 22:07
MemberMorgs Morgan11-Jul-11 22:07 
AnswerRe: Regular Expression Pin
Firo Atrum Ventus11-Jul-11 22:31
MemberFiro Atrum Ventus11-Jul-11 22:31 
GeneralRe: Regular Expression Pin
Morgs Morgan11-Jul-11 23:09
MemberMorgs Morgan11-Jul-11 23:09 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.