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


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

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

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

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

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

Возвращает всю строку и с запятой и без.
...
Рейтинг: 0 / 0
Регулярное выражение с условием
    #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
Регулярное выражение с условием
    #39942609
Jan Kowalski-Smith
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat,

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

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

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

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

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

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

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

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


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