Я искал ответ на свой вопрос, но не смог найти, поэтому я пишу здесь.Regex Совпадение нескольких вхождений с номерами в строке C#
Я хочу взять пример строки: = «+37513220102304920105590»
и найти все матчи для чисел длиной 11, который начинается 3 или 4.
Я пытался сделать так:
string input = "37513220102304920105590"
var regex = new Regex("^[3-4][0-9]{10}$");
var matches = regex.Matches(trxPurpose);
// I expect it to have 3 occurances "37513220102", "32201023049" and "30492010559"
// But my matches are empty.
foreach (Match match in matches)
{
var number = match.Value;
// do stuff
}
Мой вопрос: Является ли мое регулярное выражение плохим, или я что-то не так с математикой?
Вы можете написать '[34] и' \ d', если вы хотите, чтобы ваш regex short;) Я не знал о '? =', хорошем. –
Да, '[3-4]' = '[34]'. Это больше примечание к OP. Что касается '\ d', я бы сделал это только с добавлением флага' RegexOptions.ECMAScript', так как '\ d' соответствует более ASCII-цифрам. См. [* '\ D' менее эффективен, чем' [0-9] '*] (http://stackoverflow.com/a/16621778/3832970). –
И '\ d {10}' вместо '[0-9] {10}', то я не думаю, что вы можете сделать его короче –