Сгенерировать регулярное выражение для соответствия строкам

мне нужно регулярное выражение, которое может соответствовать:

https://share.host.com/

https://media.host.com/

https://lost.host.com/

https://found.host.com/

https://anything.host.com/

Итак, в основном я хочу, чтобы регулярное выражение соответствовало https: //*.host.com/

Примечание: я не прошу какой-нибудь веб-сайт, который может генерировать регулярное выражение, и я не спрашиваю, как его сгенерировать, и я не прошу узнать, как сгенерировать регулярное выражение. Мне просто нужен ответ от любого, кто имеет опыт сопоставления регулярных выражений.

Писать это не так уж сложно, поэтому вы, вероятно, пытались это сделать. С какой проблемой вы столкнулись при написании решения?

Pshemo 31.10.2018 14:04

@Pshemo, я не знаю, как писать регулярное выражение, и мне нужно быстрое решение, так как у меня нет времени сидеть и изучать регулярное выражение, пока я спешу применить исправление, кроме того, я перепробовал все веб-сайты и не получил ни одного В результате я просто просил некоторую помощь, и, возможно, я выучу регулярное выражение после применения исправления. но пользователи осыпали меня голосами против и отчетами. Это простая помощь, расслабь всех

Mohammad Haidar 31.10.2018 14:08
3
2
40
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий
https://[\w]+[.]host[.]com/

Здесь,

https:// - будет соответствовать точному слову

[\w]+ - будет соответствовать любым символам слова [A-Za-z_0-9]

[.]host[.]com/ - будет соответствовать точному слову

Ниже приведен код Java,

public static void main(String[] args) {
    List<String> list = Arrays.asList("https://share.host.com/",
            "https://media.host.com/","https://lost.host.com/","https://anything.google.in/","https://found.host.com/","https://anything.host.com/","https://anything.host.in.com/");

    String regEx="https://[\\w]+[.]host[.]com/";

    for(String input:list) {
        Matcher matcher = Pattern.compile(regEx).matcher(input);            

        if(matcher.matches()) {         
            System.out.println("Valid   :" +input );
        }else {
            System.out.println("Invalid :" +input);
        }
    }
}

«[/ w *] // - будет соответствовать любому слову символы [A-Za-z_]» и «.host.com / - будет соответствовать точному слову» неверны. Пожалуйста, уделите больше внимания своим ответам. Не снижайте доверие к этому сайту, который многие строили годами.

Pshemo 31.10.2018 14:06

Ошибка печати. внес необходимые изменения

Deepak Gunasekaran 31.10.2018 14:07

Нет, у него еще много проблем. Сначала проверьте свое решение, а затем опубликуйте его.

Pshemo 31.10.2018 14:09

@Pshemo Current Expression https: // [\ w] + .host.com / точно будет работать

Deepak Gunasekaran 31.10.2018 14:10

Протестируйте его против http://somehostecom/ или http://somehost.com/.

Pshemo 31.10.2018 14:15

Оба недействительны.

Deepak Gunasekaran 31.10.2018 14:19

Моя ошибка, я заменяю http на https в своих примерах, а затем снова тестирую.

Pshemo 31.10.2018 14:22

Вы не можете просто так использовать символы косой черты (/) или точки (.), Тогда их нужно экранировать. Что-то вроде этого должно работать лучше: https:\/\/[\w]+\.host\.com\/

Amongalen 31.10.2018 14:25

Внес изменения. Спасибо :)

Deepak Gunasekaran 31.10.2018 14:26

@Amongalen В JavaScript регулярное выражение имеет форму /regex/flags, но в Java это не так, поэтому / не является специальным символом, который здесь требует экранирования.

Pshemo 31.10.2018 14:26

@DeepakGunasekaran Наконец-то :) Кстати, вам не нужно помещать \w в класс символов. \w+ имеет тот же эффект, что и [\w]+. [\w] используется, если вы хотите объединить его с другими символами или классами символов, такими как [\w!?] для сопоставления букв, цифр, _, !, ?.

Pshemo 31.10.2018 14:30

@Pshemo Я использовал regexr.com для проверки этого регулярного выражения, и он давал мне ошибки при использовании неэкранированного /. Однако вы правы, это скорее предупреждение - «это может вызвать проблемы при копировании / вставке в код»

Amongalen 31.10.2018 14:32

Разобрался @Pshemo Спасибо :)

Deepak Gunasekaran 31.10.2018 14:39

Другие вопросы по теме