Исправлена ​​ошибка, из-за которой выражение регулярного выражения получало первое слово в строке в Java? - PullRequest
0 голосов
/ 18 февраля 2020

Я запускаю простое приложение Java и хочу получить самое первое слово в каждой передаваемой строке. Поэтому я сделал str.split(" ");, но понял, что моя строка очень динамична c, и она постоянно меняется. Поэтому я выбираю ,, помеченный на строку, которую я передаю в качестве параметра, и это приводит к сбою моего кода. Поэтому я пытаюсь найти конкретное выражение регулярного выражения, чтобы просто захватить самые первые слова до пробела, запятой, точки или т. Д. c.

Пример строки:

WebServer, Config where AppConfig.display ends-with '/conf/workers.properties'  and Config.content.content contains 'worker.lyc_' and Config.parent.guid==WebServer.guid and exists(WebServer.container.virtualHosts.serverName contains 'www.laffatservices.gix.com')

Моя цель - просто схватить WebServer.

Ответы [ 2 ]

2 голосов
/ 18 февраля 2020

Если ваша цель - захватить только первое слово, то вот ваше регулярное выражение ^[A-Za-z]{2,}.

Обратите внимание, что соответствует последовательности, состоящей как минимум из двух заглавных и строчных букв . И это совпадение должно быть только в начале .

Надеюсь, это поможет вашему делу.

1 голос
/ 18 февраля 2020

Если вы хотите find() первое слово, которое НЕ запятая, пробел и т. Д. c. Вы можете использовать класс отрицанных символов [^ ] и размещать внутри всех символов, которые вам не нужны. Это приведет к созданию класса символов, который будет принимать всех других символов .

В вашем случае вы можете использовать такой код:

String yourText = "WebServer, Config where AppConfig.display ends-with '/conf/workers.properties'  and Config.content.content contains 'worker.lyc_' and Config.parent.guid==WebServer.guid and exists(WebServer.container.virtualHosts.serverName contains 'www.laffatservices.gix.com')";
Pattern p = Pattern.compile("[^,\\s]+");
Matcher m = p.matcher(yourText);
if (m.find()){
    String firstMatch = m.group();
    System.out.println(firstMatch);
}else{
    //handle case where there is no match found.
}

Вывод: WebServer

ПРИМЕЧАНИЕ. Использование find() также позволит вам найти слово, даже когда ваш текст начинается с символов, которые вы хотите пропустить, когда String yourText = ",,,foo,,"; результат будет foo.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...