Я пытаюсь разобрать строку и разделить ее на некоторые разделители, в том числе разделители.Как я могу разбить строку в зависимости от ее содержимого?
Например, из строки if(a>b) write(a);
Я хочу, чтобы получить if
, (
, a
, >
, b
, )
, write
, (
, a
, )
, ;
Вот что я пробовал:
string pattern = "(" + String.Join("|", delimiters.Select(d =>Regex.Escape(d)).ToList()) + ")";
List<string> result = Regex.Split(line, pattern).ToList();
Это работает, но в некоторых случаях это терпит неудачу. Если бы у меня была строка if(a>0) write("it is positive");
, я бы не хотел получать "it
, is
, positive"
(потому что пространство является разделителем), но "it is positive"
. Как я могу это сделать?
Вы просто хотите, чтобы соответствовать C-строки? Это решаемый вопрос, здесь есть много таких вопросов. Попробуйте добавить ['@" "" [^ "" \\] * (?: \\. [^ "" \\] *) * "" "'] (http://regexstorm.net/tester?p= % 22% 5b% 5e% 22% 5C% 5C% 5d * (% 3f% 3a% 5c% 5с.% 5b% 5e% 22% 5C% 5C% 5d *) *% 22 & я =% 22some% 5cnstring% 22) , –
Не только матч, но и разделение строки. – user1012732
http://stackoverflow.com/questions/2484919/how-do-i-split-a-string-by-strings-and-include-the-delimiters-using-net –