Гость
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Регулярное выражение с условием / 16 сообщений из 16, страница 1 из 1
09.03.2020, 21:52
    #39935734
Jan Kowalski-Smith
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Регулярное выражение с условием
Привет. Нужно регулярное выражение для выборки Н символов после запятой, но с условием, если запятой нет вернуть пустую строку или что-нибудь. Сейчас делаю так:
Код: c#
1.
(?<=,)\s?.{1,20}


, но если запятой нет то isMatch = false
...
Рейтинг: 0 / 0
09.03.2020, 23:47
    #39935754
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Регулярное выражение с условием
Jan Kowalski-Smith,

Регулярка не находит пустую последовательность символов, это лишено смысла.
...
Рейтинг: 0 / 0
31.03.2020, 15:45
    #39942576
Jan Kowalski-Smith
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Регулярное выражение с условием
Возвращаясь к вопросу, небольшое пояснение (прошу прощенья, наверное, надо было с самого начала вопрос правильно поставить)

На входе: Jan, Kowalski (с запятой)
На выходе: Kowalski

На входе: Jan Kowalski (без запятой)
На выходе должно получиться: Jan Kowalski
...
Рейтинг: 0 / 0
31.03.2020, 16:10
    #39942580
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Регулярное выражение с условием
Код: plaintext
^(.*, )?(.*)$

во второй группе будет искомое
...
Рейтинг: 0 / 0
31.03.2020, 16:24
    #39942590
Jan Kowalski-Smith
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Регулярное выражение с условием
Shocker.Pro,

Возвращает всю строку и с запятой и без.
...
Рейтинг: 0 / 0
31.03.2020, 16:52
    #39942606
fkthat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Регулярное выражение с условием
Jan Kowalski-Smith
Shocker.Pro,

Возвращает всю строку и с запятой и без.

Пресловутая "жадность" регулярок :)) А чем плохо просто всю строку разбить простейшим регекспом ",\\s", а потом снова соединить, вставив пробелы?

Код: c#
1.
2.
3.
var expected = "Joe Doe";
var actual = string.Join(" ", Regex.Split("Joe,   Doe", ",\\s*"));
actual.Should().Be(expected);
...
Рейтинг: 0 / 0
31.03.2020, 16:59
    #39942609
Jan Kowalski-Smith
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Регулярное выражение с условием
fkthat,

Не получается соединить, к сожалению. Надо либо только фамилию, если запятая есть, или всю строку целиком (имя и фамилия), если запятой нет.
...
Рейтинг: 0 / 0
31.03.2020, 17:12
    #39942619
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Регулярное выражение с условием
Jan Kowalski-Smith
Shocker.Pro,

Возвращает всю строку и с запятой и без.
всё работает корректно
...
Рейтинг: 0 / 0
31.03.2020, 17:27
    #39942625
Jan Kowalski-Smith
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Регулярное выражение с условием
Shocker.Pro,

Так, конечно же работает, но сервис сторонний, конкретную группу выделить нельзя. Вот, например, как тут
http://regexstorm.net/tester
...
Рейтинг: 0 / 0
31.03.2020, 17:31
    #39942626
Jan Kowalski-Smith
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Регулярное выражение с условием
Чувствую, группа без захвата нужна, но вот написать не получается
...
Рейтинг: 0 / 0
31.03.2020, 17:31
    #39942627
fkthat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Регулярное выражение с условием
Jan Kowalski-Smith
fkthat,

Не получается соединить, к сожалению. Надо либо только фамилию, если запятая есть, или всю строку целиком (имя и фамилия), если запятой нет.

Не совсем пойму, а строка всегда только из имени, опциональной запятой (с пробелами) и фамилии состоит? Так оно тоже будет работать - split вернет массив из одного элемента, а join просто этот самый элемент и вернет (при этом, правда, весь whitespace не будет заменяться на один пробел).
...
Рейтинг: 0 / 0
31.03.2020, 17:34
    #39942630
Jan Kowalski-Smith
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Регулярное выражение с условием
fkthat,

Хорошо бы и split и join, да вот код не доступен. Только регуляркой и можно :)
...
Рейтинг: 0 / 0
31.03.2020, 17:36
    #39942633
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Регулярное выражение с условием
Jan Kowalski-Smith
Так, конечно же работает, но сервис сторонний, конкретную группу выделить нельзя. Вот, например, как тут
А вот можно все ограничения сначала услышать? А то уже третье сообщение с уточнением ТЗ
...
Рейтинг: 0 / 0
31.03.2020, 17:50
    #39942637
Jan Kowalski-Smith
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Регулярное выражение с условием
Shocker.Pro,

Виноват :) Простите великодушно :)
Вроде, теперь уже все.
...
Рейтинг: 0 / 0
31.03.2020, 21:35
    #39942676
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Регулярное выражение с условием
Код: plaintext
((?<=^.*, ).*$)|(^[^,]*$)
...
Рейтинг: 0 / 0
02.04.2020, 09:57
    #39943071
Jan Kowalski-Smith
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Регулярное выражение с условием
Shocker.Pro,

Вот то, что надо. Спасибо!
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Регулярное выражение с условием / 16 сообщений из 16, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]