Регулярное выражение C # - можно ли сопоставить символ более одного раза за один вызов Match? - PullRequest
1 голос
/ 16 сентября 2010

Я думаю, что лучший способ задать этот вопрос - привести пример.

У меня есть строка:

string line = "12345";
 string pattern = "[0-9]{4}";
 MatchCollection collection = Regex.Matches(line, pattern);

Это вернет ОДИН матч в коллекции: «1234». НО, есть ли способ заставить его вернуть «1234» И «2345»? Поэтому я хочу, чтобы регулярное выражение не пропускало символы, которые уже были сопоставлены.

Я очень плохо знаком с регулярными выражениями, поэтому любая помощь будет принята с благодарностью. Спасибо.

Ответы [ 2 ]

1 голос
/ 16 сентября 2010

"(? = (\ D {4}))" не только будет соответствовать обеим подстрокам, но и скажет вам об этом; Вы можете получить доступ к значениям совпадающих подстрок, используя Match.Groups [1] для каждого совпадения.

1 голос
/ 16 сентября 2010

Измените выражение на:

 (?=\d{4})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...