2012-06-12 2 views
0

Я довольно новичок в Java, и я только начал работать с RegEx, и мне было интересно, какой из них лучше всего проверить, если с учетом стены текста в качестве входных данных найдено определенное регулярное выражение, и оно действительно. Я приведу пример.Определите, существует ли определенное определенное выражение в текстовом файле (Java)

У меня этот текстовый файл в качестве входных данных:

Derpity64_1 64 3 6 1

HerpDerp32 1 6 3 0 26

HurrDurr16 2 5 7 7 78

Теперь для меня важна HerpDerp32. После того, как я убедился, что текстовый файл содержит эту строку HerpDerp, я хочу убедиться, что числа после HerpDerp (32 в этом случае) являются либо 16, 32, либо 64.

Как я могу продолжить? Прошу прощения, если я ошибся/не слишком хорошо объяснил.

+0

Добро пожаловать в переполнение стека! [Что вы пробовали?] (Http://whathaveyoutried.com) –

ответ

0

Там нет необходимости для регулярных выражений здесь ...

Все, что вам нужно сделать, это цикл через файл (чтение одной строки за один раз).

Как только вы найдете строку, которая начинается с вашего поискового запроса, просто проверьте символы после термина.

Вы можете использовать String.substring() для проверки персонажей после HerpDerp.

Если вы собираетесь использовать java, вы можете также привыкнуть к чтению документации API.

Вот page with the String functions. Вы будете использовать это много.

http://docs.oracle.com/javase/6/docs/api/java/lang/String.html 

Вот documentation for the FileReader class, который также будет полезно здесь.

+0

Думаю, мне следовало бы приблизиться к действительности. Итак, у меня есть не файл. Но я разработал GUI с WindowBuilder в Eclipse, и у меня есть JTextPane, и я делаю textPane.getDocument(), чтобы получить текст из него. Теперь я хочу найти эту конкретную строку, которую я знаю наверняка, она должна начинаться с «STEAM» (это идентификатор пара, если у вас есть уверенность), и я думаю, мне удалось получить это регулярное выражение, чтобы проверить, что это действительный SteamID = "/^STEAM_0: (0 | 1): [0-9] {1} [0-9] {0,8} $ /". Что мне нужно сделать, это сохранить переменную Steam ID, если найдена vlid. Извините: D – Damian

+0

Было бы разумнее изменить ваш вопрос, чем набрать все, что здесь. – jahroy

0

Вам действительно нужно использовать регулярное выражение? Jahroy предложил что-то путь быстрее

String[] data = { "Derpity64_1 64 3 6 1", "HerpDerp32 1 6 3 0 26", 
     "HurrDurr16 2 5 7 7 78" }; 

for(String s:data){//iterate over all Strings in 'data' array 
    if (s.startsWith("HerpDerp"))//check if tested string starts with HerpDerp 
     //HerpDerp32 1 6 3 0 26 
     //  ^^ 
     //
     //show only chars from 8 till 9 index 
     System.out.println(s.substring(8,10));//(10 is excluded) 
} 

Edit:

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

String[] data = { "Derpity64_1 64 3 6 1", "HerpDerp32 1 6 3 0 26", 
    "HurrDurr16 2 5 7 7 78" }; 
Pattern p=Pattern.compile("^HerpDerp(\\d*)"); 
for (String s : data) { 
    Matcher m=p.matcher(s); 
    if(m.find()) 
     System.out.println(m.group(1)); 
     //group(1) will return content from first bracket in regex 
} 
+0

Думаю, мне следовало бы приблизиться к реальности. Итак, у меня есть не файл. Но я разработал GUI с WindowBuilder в Eclipse, и у меня есть JTextPane, и я делаю textPane.getDocument(), чтобы получить текст из него. Теперь я хочу найти эту конкретную строку, которую я знаю наверняка, она должна начинаться с «STEAM» (это идентификатор пара, если у вас есть уверенность), и я думаю, мне удалось получить это регулярное выражение, чтобы проверить, что это действительный SteamID = "/^STEAM_0: (0 | 1): [0-9] {1} [0-9] {0,8} $ /". Что мне нужно сделать, это сохранить переменную Steam ID, если найдена vlid. Извините: D – Damian

+0

@ w0rm Проверьте мои изменения. Я не знаю, как выглядят ваши данные, но надеюсь, что это поможет вам найти решение проблемы. – Pshemo

+0

Большое спасибо, мне было над чем поработать, я почти там: P – Damian

Смежные вопросы