Форум программистов, компьютерный форум, киберфорум
Java для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.68/22: Рейтинг темы: голосов - 22, средняя оценка - 4.68
Заблокирован
1

Regexp; как определить содержит ли строка цифры и буквы одновременно в любом порядке

09.02.2020, 13:30. Показов 4096. Ответов 33
Метки нет (Все метки)

Как с помощью регулярного выражения выяснить содержит ли строка буквы и цифры, но в любом порядке.
Например выражение
Java
1
([a-z, A-Z]+[0-9])
будет верным если строка будет начинаться с буквы, если с цифры, то вернет ложь.
Как бы с помощью одного регулярного выражения проверить содержит ли строка цифры и буквы в независимости с чего она начинается?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.02.2020, 13:30
Ответы с готовыми решениями:

Определить, содержит ли строка буквы от «а» до «е»
Дана строка. Содержит ли она буквы от «а»до «е»? Помогите, пожалуйста, решить программу

Определить содержит ли строка, введённая с консоли, только цифры
Пользователем вводится строка. Программа должна определить содержит ли эта строка только цифры.

Дана строка символов. Определить слова, содержащие одновременно 2 указанные буквы
Пожалуйста,помогите решить задачу на языке Pascal ABC и составить к ней блок-схему. Дана строка...

Строка: Определить, сколько слов в тексте содержит ровно 2 буквы 'o'.
Доброго времени суток! Столкнулся с такой задачей и застопорился почти в самом конце. Подскажите...

33
Супер-модератор
Эксперт PythonЭксперт Java
7558 / 4142 / 1533
Регистрация: 21.10.2017
Сообщений: 11,686
09.02.2020, 15:27 2
Java
1
2
3
4
5
6
7
8
9
10
11
12
public static void main(String[] args) {
        System.out.println(isContain("abc"));       // true
        System.out.println(isContain("123"));       // true
        System.out.println(isContain("123abc"));    // true
        System.out.println(isContain("123abc,.;")); // true
        System.out.println(isContain(",.;"));       // false
    }
    private static boolean isContain(String s){
        Pattern p = Pattern.compile("\\w+");
        Matcher m = p.matcher(s);
        return m.find();
    }
1
205 / 68 / 30
Регистрация: 01.02.2020
Сообщений: 270
09.02.2020, 15:34 3
iSmokeJC, а нижнее подчеркивание является буквой?
0
Супер-модератор
Эксперт PythonЭксперт Java
7558 / 4142 / 1533
Регистрация: 21.10.2017
Сообщений: 11,686
09.02.2020, 15:38 4
Да.
0
205 / 68 / 30
Регистрация: 01.02.2020
Сообщений: 270
09.02.2020, 15:42 5
iSmokeJC, но в любом случае задание требует одновременного нахождения цифры и буквы....
0
Супер-модератор
Эксперт PythonЭксперт Java
7558 / 4142 / 1533
Регистрация: 21.10.2017
Сообщений: 11,686
09.02.2020, 16:06 6
Coffeini, ну так вперед!
0
205 / 68 / 30
Регистрация: 01.02.2020
Сообщений: 270
09.02.2020, 16:08 7
Лучший ответ Сообщение было отмечено sodda как решение

Решение

Таким образом нельзя сделать?
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import java.util.regex.Matcher;
import java.util.regex.Pattern;
 
public class Main {
    public static void main(String[] args) {
        System.out.println(isContain("abc"));       // false
        System.out.println(isContain("123"));       // false
        System.out.println(isContain("123abc"));    // true
        System.out.println(isContain("123abc,.;")); // true
        System.out.println(isContain(",.;"));       // false
    }
 
    private static boolean isContain(String s) {
        Pattern p = Pattern.compile("(\\d[a-z, A-Z]|[a-z, A-Z]\\d)");
        Matcher m = p.matcher(s);
        return m.find();
    }
}
1
display "I'LL BE BACK"
1200 / 824 / 253
Регистрация: 02.04.2009
Сообщений: 3,076
09.02.2020, 19:20 8
Цитата Сообщение от Coffeini Посмотреть сообщение
является буквой
Является alphabetic symbol но никак не буквой.
0
205 / 68 / 30
Регистрация: 01.02.2020
Сообщений: 270
09.02.2020, 19:28 9
Цитата Сообщение от Kukstyler Посмотреть сообщение
Является alphabetic symbol
Значит использование
Цитата Сообщение от iSmokeJC Посмотреть сообщение
Pattern p = Pattern.compile("\\w+");
будет ошибкой.....
0
Заблокирован
09.02.2020, 19:36  [ТС] 10
Цитата Сообщение от Coffeini Посмотреть сообщение
iSmokeJC, а нижнее подчеркивание является буквой?
На самом деле не важно, главное, чтобы были и цифры и буквы одновременно.
Цитата Сообщение от Coffeini Посмотреть сообщение
Таким образом нельзя сделать?
Я пишу на Сlojure, а он реализован на JVM, поэтому интересовала возможность решения с помощью только regexp.
Но все равно спасибо, что попытались помочь.
Да и вообще - всем спасибо. Решил использовать два вызова функции regexp функции и не парится в конечном счёте.
0
205 / 68 / 30
Регистрация: 01.02.2020
Сообщений: 270
09.02.2020, 19:44 11
Цитата Сообщение от sodda Посмотреть сообщение
На самом деле не важно
Ввод "_" будет выдавать "true", а тут ни букв, ни цифр.

Цитата Сообщение от sodda Посмотреть сообщение
одновременно.
Цитата Сообщение от iSmokeJC Посмотреть сообщение
System.out.println(isContain("abc")); // true
System.out.println(isContain("123")); // true
Как видно не очень-то одновременно.......
0
Заблокирован
09.02.2020, 20:10  [ТС] 12
Цитата Сообщение от Coffeini Посмотреть сообщение
Как видно не очень-то одновременно.......
Я попробовал разные способы и пришёл к выводу, что одновременно в одном regexp выражении наверно не возможно.
Поэтому решил использовать два вызова [0-9] .*[a-z, A-Z].* - если буквы найдутся в слове, то передается дальше для проверки на наличие цифр, если первая проверка на буквы будет неудачна, то превращаю false в пустую строку и проверяю на наличие цифр, которых там конечно же нет, тогда вернется тоже false.
0
Супер-модератор
Эксперт PythonЭксперт Java
7558 / 4142 / 1533
Регистрация: 21.10.2017
Сообщений: 11,686
09.02.2020, 20:12 13
Цитата Сообщение от sodda Посмотреть сообщение
не возможно
Возможно
0
Заблокирован
09.02.2020, 20:16  [ТС] 14
Цитата Сообщение от iSmokeJC Посмотреть сообщение
Возможно
Возможно и возможно, но я не нашёл способа)
0
Супер-модератор
Эксперт PythonЭксперт Java
7558 / 4142 / 1533
Регистрация: 21.10.2017
Сообщений: 11,686
09.02.2020, 20:21 15
sodda, давай точно - нужно найти слова в которых
- только и буквы и цифры
или
- и буквы и цифры, а остальное до лампочки, есть или нет

- если нет или букв, или цифр - не подходит
0
Заблокирован
09.02.2020, 20:27  [ТС] 16
Цитата Сообщение от iSmokeJC Посмотреть сообщение
- если нет или букв, или цифр - не подходит
именно так. это для проверки паролей, чтобы пользователь придумывал пароли в которых есть и буквы и цифры обязательно, другие символы тоже могут быть, но это не важно.
0
337 / 263 / 108
Регистрация: 14.06.2016
Сообщений: 522
09.02.2020, 20:45 17
Лучший ответ Сообщение было отмечено iSmokeJC как решение

Решение

Java
1
passwd.matches(".*(\\p{L}(?=.*\\d)|\\d(?=.*\\p{L})).*")
3
205 / 68 / 30
Регистрация: 01.02.2020
Сообщений: 270
09.02.2020, 20:49 18
А это разве не работает?
Цитата Сообщение от Coffeini Посмотреть сообщение
Pattern p = Pattern.compile("(\\d[a-z, A-Z]|[a-z, A-Z]\\d)");
Зачем усложнять до такого??
Цитата Сообщение от vcrop Посмотреть сообщение
passwd.matches(".*(\\p{L}(?=.*\\d)|\\d(?=.*\\p{L})).*")
0
Супер-модератор
Эксперт PythonЭксперт Java
7558 / 4142 / 1533
Регистрация: 21.10.2017
Сообщений: 11,686
09.02.2020, 21:01 19
Цитата Сообщение от Coffeini Посмотреть сообщение
Зачем
"';';12';ef';'12" - false
2
205 / 68 / 30
Регистрация: 01.02.2020
Сообщений: 270
09.02.2020, 21:13 20
Ясно. Понятно. Спасибо.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.02.2020, 21:13

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Дано k литерных строк (массив из строк)4. Каждая строка содержит латинские и русские буквы, цифры и т.д
Дано k литерных строк (массив из строк)4. Каждая строка содержит латинские и русские буквы, цифры а...

Заданный текст содержит только цифры и буквы. Определить, обладает ли он следующим свойством
Заданный текст содержит только цифры и буквы. Определить, обладает ли он следующим свойством. Сумма...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.