Страницы

Поиск по вопросам

четверг, 13 февраля 2020 г.

Регулярное выражение - слово из букв и цифр

#c_sharp #регулярные_выражения


В строке

"Теоретики3 и 2п4423рактики палинд4442рома выделили
2многочис2ленные4 погран24ичные2 с пал24инд4ром4м формы"


найти слова состоящие из цифр и букв.

Не могу написать регулярное выражение для задания, получилось только это:

([a-zA-Zа-яА-ЯёЁ]+\d+[a-zA-Zа-яА-ЯёЁ]+)|(\d+[a-zA-Zа-яА-ЯёЁ]+)|([a-zA-Zа-яА-ЯёЁ]+\d+)


Но тогда слово пал24инд4ром4м разбивается на три, а погран24ичные2 не полностью выделяется.
    


Ответы

Ответ 1



((([a-zA-Zа-яА-ЯёЁ]+\d+)|(\d+[a-zA-Zа-яА-ЯёЁ]+))[a-zA-Zа-яА-ЯёЁ\d]*) т.е. ((одна или более буква, затем одна или более цифра) или (одна или более цифра, затем одна или более буква)) потом буквы либо цифры

Ответ 2



Регулярка такая (надо выставить флаг игнорирования регистра): (?=\w*(?!\d)\w)(?=\w*\d)\w+ Без подчёркиваний так: \b(?=\w*(?!\d)\w)(?=\w*\d)(?=((?!_)\w)+\b)\w+ Кстати, никакой привязки к языкам :) http://ideone.com/ZdG7Sa http://ideone.com/sIsUF4 using System; using System.Text.RegularExpressions; public class Test { public static void Main() { var str = "Теоретики3 и 2п4423ра_ктики палинд4442рома выделили\n" + "2многочис2ленные4 погран24ичные2 с пал24и_нд4ром4м формы"; foreach (Match match in Regex.Matches(str, @"(?=\w*(?!\d)\w)(?=\w*\d)\w+", RegexOptions.IgnoreCase)) Console.WriteLine(match.Value); Console.WriteLine("==="); foreach (Match match in Regex.Matches(str, @"\b(?=\w*(?!\d)\w)(?=\w*\d)(?=((?!_)\w)+\b)\w+", RegexOptions.IgnoreCase)) Console.WriteLine(match.Value); } }

Комментариев нет:

Отправить комментарий