powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Регулярные выражения
10 сообщений из 10, страница 1 из 1
Регулярные выражения
    #37882139
ErikI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
К сожалению я никогда не использовал регулярных выражений. Есть простейшая проблема как добавить символ \ в разрешенные. Я делаю поиск в списке файлов они занесены с \\ пример:
c:\\public\\klient.txt
c:\\public\\MacAdress.exe
c:\\public\\Monitor_Procedur.txt
Задаю выражение [a-zA-Z0-9]+ но как добавть туда \\ не знаю пробовал ставить \\\\ не работает.
...
Рейтинг: 0 / 0
Регулярные выражения
    #37882150
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Объясните задачу и приведите минимальный пример кода, который не работает.
...
Рейтинг: 0 / 0
Регулярные выражения
    #37882407
ErikI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

Хочу отфильтровать только английские буквы и цифры + задать расширение '.xml' последние вроде просто. Код работает но маска задана не правильно. Если ставлю маску '.+' то получаю список всех файлов, а надо отфильтрованных по условию.
...
Рейтинг: 0 / 0
Регулярные выражения
    #37882544
ErikI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если интересно вот класс который вызывается в цикле и проверяет входящею строку.

private class Tester{
Pattern MaskCompile;
public FormatTester(String Mask) {
MaskCompile = Pattern.compile(Mask);
}

public void printIfNead(String fileName){
if(neadPrint(fileName)){
System.out.println(fileName) ;
}
}

public boolean neadPrint(String fileName)
{
Matcher math = MaskCompile.matcher(fileName);
return math.matches();
}
}
...
Рейтинг: 0 / 0
Регулярные выражения
    #37882588
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
хрень какая-то. а в родительском пути, тоже только цифры и буквы должны быть? А путей много, или одна директория всегда?
...
Рейтинг: 0 / 0
Регулярные выражения
    #37882927
Фотография ivanov-void
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ErikI,

Код: 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.
...

class Tester{
	Pattern MaskCompile;
	public void formatTester(String Mask) {
		MaskCompile = Pattern.compile(Mask);
	}
...

...
	public class Test {
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Tester tester = new Tester();
		
		tester.formatTester("([a-zA-Z]:)?(\\\\[a-zA-Z0-9_.-]+)+\\\\?");				
		tester.printIfNead("c:\\public\\Monitor_Procedur.txt");
	}
}

...



Код: powershell
1.
c:\public\Monitor_Procedur.txt
...
Рейтинг: 0 / 0
Регулярные выражения
    #37883675
ErikI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ivanov-void,

Думаю void лишний так как я создаю класс Tester tester = new Tester(format) и далее с ним работаю. С маской чтото не вышло. Может быть не так с хранением. Вот класс который я взял из инета и изменил.

import java.io.File;
import java.util.LinkedList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class FileParser
{

public void parse(String root, int depth, String format) {
Tester tester = new Tester(format) ;

List<String> currentDirContent = getListDirectoryContent(new File(root)) ;
List<String> nextDirContent = new LinkedList<String>() ;
int currentDepth = 0 ;

while (currentDepth < depth) {
for(String iter : currentDirContent){
File temp = new File(iter) ;
if(temp.isFile()){
tester.printIfNead(iter) ;
}else if(temp.isDirectory()){
nextDirContent.addAll(getListDirectoryContent(temp));
}
}
currentDirContent = nextDirContent ;
nextDirContent = new LinkedList<String>() ;
currentDepth ++ ;
}
}

private List<String> getListDirectoryContent(File fp){
List<String> returnList = new LinkedList<String>() ;
if( fp.list() != null){
for (String iter : fp.list()) {
returnList.add(fp.getAbsoluteFile()+ File.separator+ iter);
}
}
return returnList ;
}

private class Tester{
Pattern MaskCompile;
public Tester(String Mask) {
MaskCompile = Pattern.compile(Mask);
}

public void printIfNead(String fileName){
if(neadPrint(fileName)){
System.out.println(fileName) ;
}
}

public boolean neadPrint(String fileName)
{
Matcher math = MaskCompile.matcher(fileName);
return math.matches();
}
}

}
...
Рейтинг: 0 / 0
Регулярные выражения
    #37883689
Фотография ivanov-void
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ErikIДумаю void лишний так как я создаю класс Tester tester = new Tester(format) и далее с ним работаю.

Для конструктора- да, но не для метода
Код: java
1.
2.
3.
...
formatTester(String mask)
...
...
Рейтинг: 0 / 0
Регулярные выражения
    #37883706
Фотография ivanov-void
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ErikIС маской чтото не вышло. Может быть не так с хранением.

Не знаю, что у вас не вышло; указанный regexp задает строгий матч по паттерну.
...
Рейтинг: 0 / 0
Регулярные выражения
    #37883894
ErikI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ivanov-void,

Да действительно работает. Я по невнимательности пропустил что при вставке реактор удвоил количество слешей.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Регулярные выражения
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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