Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Регулярные выражения java / 25 сообщений из 39, страница 1 из 2
18.12.2013, 21:25:19
    #38505864
Fyn2013
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Регулярные выражения java
а подскажите пожалуйста каким должно быть рег. выражение, чтобы искало только те слова, которые не включают символов и знаков типа !"=<>№?*_+. и т.д... а если вводимое слово будет с каким то из знаков, ну тогда возвращаем фразу - слово не найдено
...
Рейтинг: 0 / 0
18.12.2013, 21:30:39
    #38505868
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Регулярные выражения java
Ну, правда, прочитайте хотя бы один туториал по регулярным выражениям и JavaDoc к классу Pattern.
...
Рейтинг: 0 / 0
18.12.2013, 21:30:42
    #38505869
DoSOfRedRiver
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Регулярные выражения java
Fyn2013,

Вам действительно трудно доки почитать?
...
Рейтинг: 0 / 0
18.12.2013, 21:45:00
    #38505881
Fyn2013
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Регулярные выражения java
DoSOfRedRiver,

читал, не получается сделать к своей ситуации, напишите если знаете
...
Рейтинг: 0 / 0
18.12.2013, 21:53:34
    #38505883
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Регулярные выражения java
Fyn2013читал, не получается сделать к своей ситуации, напишите если знаете
Покажите как пробовали.
Можно использовать все знаки \p{Punct} с отрицанием. Если нужны вообще все символы. [^\p{Punct}]
Либо если только важи знаки, то аналогично - [^все нужные символы]. Только некоторые знаки придется эскейпить слешами.
...
Рейтинг: 0 / 0
18.12.2013, 21:54:12
    #38505885
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Регулярные выражения java
блин, зачем я это пишу... всё равно будете готовый код клянчить.
...
Рейтинг: 0 / 0
18.12.2013, 22:10:15
    #38505893
Fyn2013
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Регулярные выражения java
Blazkowicz,

та ну нет))) ну смотрите, если я составляю таким образом

Код: java
1.
2.
3.
4.
if(word.matches("[^А-Яа-я0-9]+$")){
            	   
            	   str="Слово не найдено";
	}


т.е. когда я вписываю в поиск чисто знаки всякие, то он мне возвращает - Слово не найдено. Но загвоздка в том, что если я вписываю в поиск буквы в перемешку со знаками например "при_+вет", то он ничё не возвращает..а надо чтобы тоже возвращал - слово не найдено..как так сделать?
...
Рейтинг: 0 / 0
18.12.2013, 23:07:38
    #38505927
Fyn2013
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Регулярные выражения java
DoSOfRedRiver,

никто не знает тоже?(
...
Рейтинг: 0 / 0
18.12.2013, 23:47:34
    #38505939
dmitriyche
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Регулярные выражения java
Fyn2013,

а если ^[^А-Яа-я0-9]+$
...
Рейтинг: 0 / 0
19.12.2013, 00:04:10
    #38505942
Fyn2013
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Регулярные выражения java
dmitriyche,

не плохо, но всё равно не возвращает "слово не найдено"
...
Рейтинг: 0 / 0
19.12.2013, 00:36:34
    #38505954
dmitriyche
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Регулярные выражения java
Fyn2013,

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
public class Main {

    public static void main(String... args) {
        String word = "при_+вет";
        String str = "";

        if (!word.matches("[^А-Яа-я0-9]+$")) {
            str = "Слово не найдено";
        }

        System.out.println(str);
    }

}



Код: java
1.
Слово не найдено
...
Рейтинг: 0 / 0
19.12.2013, 00:57:23
    #38505972
Fyn2013
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Регулярные выражения java
dmitriyche,

да, но тогда оно и ничего вообще не найдёт) добавьте в ваш код ещё например слово без знаков..
String word2 = "привет";
мне же надо чтобы нужные нормальные слова без знаков находились
...
Рейтинг: 0 / 0
19.12.2013, 01:00:04
    #38505973
dmitriyche
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Регулярные выражения java
Fyn2013,

давайте в TDD попишем.
Какие у вас кейсы (входные данные и ожидаемый результат) есть?
...
Рейтинг: 0 / 0
19.12.2013, 01:12:36
    #38505977
Fyn2013
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Регулярные выражения java
dmitriyche,

у меня как бы такой поиск(который я пытаюсь всё усовершенствовать) по контенту, String word - это вводимое в поиск слово, argi - это массив, в котором ищу и result - это результат поиска. Идейка такая, чтобы находилось просто слово или полностью цифры(например отсюда - 2013 год) без всяких знаков..вот эта частица логики:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
for (int i = 0; i < argi.length; i++) {
            String result = search(argi[i], "\\b"+word+"\\b");
    if (result != null && word.length()>2) {

 str += "Search phrase " + "<b>"+ word + "</b>" + " have found in " + "<a href=\"" + argi[i] + "\">" + result + "</a>"+ "<p></p>";
}
    if(word.matches("[^A-Za-z0-9]+$")|| word.length()<3){
         	   
         	   str="Word not found!";
	        }
     if (word == null || word.isEmpty()) {
            	
            	str = "Enter a search word!";
        }
        
     }
...
Рейтинг: 0 / 0
19.12.2013, 02:16:21
    #38505999
javapecker
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Регулярные выражения java
Fyn2013, проверяйте слово перед поиском а не после, и не "не найден", а "я такое не ищу"
...
Рейтинг: 0 / 0
19.12.2013, 02:28:25
    #38506001
Fyn2013
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Регулярные выражения java
javapecker,

ок, спасибо за совет
...
Рейтинг: 0 / 0
19.12.2013, 02:29:14
    #38506002
dmitriyche
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Регулярные выражения java
Fyn2013,

Чтобы нам было проще вам помочь, присылайте компилируемый и запускаемый код, например:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
public class Main {

    public static void main(String... args) {
        String message = "Hello " + "world.";

        System.out.println(message);
    }

}



Какие у вас данные в argi, word?
Какой код в search()?
Нам очень трудно догадаться.
...
Рейтинг: 0 / 0
19.12.2013, 02:32:47
    #38506003
Fyn2013
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Регулярные выражения java
javapecker,

пока что так и не ответили как сюда мне добавить ещё часть логики, что бы при вводе в поиск например "hel#$^llo" возвратилась str="Word not found!" вместо пустоты(ну т.е. ничего не возвращает)
...
Рейтинг: 0 / 0
19.12.2013, 02:36:18
    #38506005
Fyn2013
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Регулярные выражения java
dmitriyche,

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
private final Pattern TITLE = Pattern.compile("\\<title\\>(.*)\\<\\/title\\>");
	    
	    public String search(String url, String someword) {

	        try {
	            InputStreamReader in = new InputStreamReader(new URL(url).openStream(),"UTF-8");
	            StringBuilder input = new StringBuilder();
	            int ch;
	            while ((ch = in.read()) != -1) {
	                input.append((char) ch);
	            }
	            if (Pattern.compile(someword, Pattern.CASE_INSENSITIVE | Pattern.UNICODE_CASE).matcher(input).find()) {
	                Matcher title = TITLE.matcher(input);
	                if (title.find()) {
	                    return title.group(1);
	                }
	            }
	        } catch (IOException e) {
	            e.printStackTrace();
	        } catch (PatternSyntaxException e) {
	            e.printStackTrace();
	        }
	        return null;
	    }
	    public String toString(){
	    	String[] argi = {"http://localhost:8080/site/endipnagradi", "http://localhost:8080/site/contacts_en", "http://localhost:8080/site/news_en"};
	    
for (int i = 0; i < argi.length; i++) {
            String result = search(argi[i], "\\b"+word+"\\b");

			if(word.matches("[^A-Za-z0-9]+$")|| word.length()<3){
	         	   
	         	   str="Word not found!";
		}

	         if (word == null || word.isEmpty()) {
	            	
	            	str = "Enter a search word!";
	    }
			if (result != null && word.length()>2) {

            		str += "Search phrase " + "<b>"+ word + "</b>" + " have found in " + "<a href=\"" + argi[i] + "\">" + result + "</a>"+ "<p></p>";
        
     }
   }
}
...
Рейтинг: 0 / 0
19.12.2013, 03:24:57
    #38506022
dmitriyche
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Регулярные выражения java
Fyn2013,

Возможный вариант.
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.regex.PatternSyntaxException;

public class Main {
    private static String word;

    public static void main(String... args) {
        Main main = new Main();

        word = null;
        System.out.println(main.toString());
        word = "";
        System.out.println(main.toString());
        word = "ab";
        System.out.println(main.toString());

        word = "A!";
        System.out.println(main.toString());

        word = "Applet";
        System.out.println(main.toString());

        word = "Apple";
        System.out.println(main.toString());
    }

    private final Pattern TITLE = Pattern.compile("\\<title\\>(.*)\\<\\/title\\>");

    public String search(String url, String someword) {

        try {
            BufferedReader in = new BufferedReader(new InputStreamReader(new URL(url).openStream(), "UTF-8"));
            StringBuilder input = new StringBuilder();
            String line;
            while ((line = in.readLine()) != null) {
                input.append(line);
            }
            if (Pattern.compile(someword, Pattern.CASE_INSENSITIVE | Pattern.UNICODE_CASE).matcher(input).find()) {
                Matcher title = TITLE.matcher(input);
                if (title.find()) {
                    return title.group(1);
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        } catch (PatternSyntaxException e) {
            e.printStackTrace();
        }
        return null;
    }

    public String toString() {
        String[] argi = {"http://apple.com"};
        String str = "";

        for (int i = 0; i < argi.length; i++) {
            String result = search(argi[i], "\\b" + word + "\\b");

            if (word == null || word.isEmpty()) {
                str = "Enter a search word!";
            } else if (!word.matches("^\\w+$") || word.length() < 3) {
                str = "Word not found!";
            } else if (result != null && word.length() > 2) {
                str += "Search phrase " + "<b>" + word + "</b>" + " have found in " + "<a href=\"" + argi[i] + "\">" + result + "</a>" + "<p></p>";
            }
        }

        return "For word `" + word + "`: " + str;
    }

}
...
Рейтинг: 0 / 0
19.12.2013, 03:30:56
    #38506023
dmitriyche
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Регулярные выражения java
Fyn2013,

Код: java
1.
2.
3.
4.
5.
6.
For word `null`: Enter a search word!
For word ``: Enter a search word!
For word `ab`: Word not found!
For word `A!`: Word not found!
For word `Applet`: 
For word `Apple`: Search phrase <b>Apple</b> have found in <a href="http://apple.com">Apple</a><p></p>
...
Рейтинг: 0 / 0
19.12.2013, 13:56:26
    #38506489
Fyn2013
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Регулярные выражения java
dmitriyche,

оо лучше, но странная особенность...я вот проверил - для поиска английских слов а в английском контенте всё работает - т.е. ищет нужные слова или цифры, если знаки или знаки в перемешку с буквами или цифрами, то пишет word not found, но для поиска русских букв в русском контенте не всё так - т.е. делает всё, но единственное только - это не ищет нужные русские слова..чего ж так
...
Рейтинг: 0 / 0
19.12.2013, 14:00:36
    #38506500
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Регулярные выражения java
Fyn2013но для поиска русских букв в русском контенте не всё так - т.е. делает всё, но единственное только - это не ищет нужные русские слова..чего ж так
Открываем всё тот же JavaDoc
http://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html
И читаем всё, где встречается слово Unicode
...
Рейтинг: 0 / 0
19.12.2013, 14:31:41
    #38506551
Fyn2013
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Регулярные выражения java
Blazkowicz,

тыкныте носом, в упор там не пойму что подставить мне надо))
...
Рейтинг: 0 / 0
19.12.2013, 14:33:25
    #38506554
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Регулярные выражения java
Ну, например
\p{Alnum} An alphanumeric character:[\p{IsAlphabetic}\p{IsDigit}]
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Регулярные выражения java / 25 сообщений из 39, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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