|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Java - Пересчет буквенных прав в цифровые в любом текстовом файле |
|
|
Java - Пересчет буквенных прав в цифровые в любом текстовом файле
|
Старожил Сообщения: 329 |
Профиль | Отправить PM | Цитировать
Мучаюсь второй день, не могу понять как реализовать.
В общем надо написать одну регулярное выражение которое охватывало сразу 4 варианта нахождения шаблона в строке согласно его позиции 1) вначале строки 2) в середине строки 3)в конце строки 4) только шаблон С 2м и 3м я сделал так Но это не применимо к началу строки: отрывает первый символ что стоит у шаблона, он тоже нужен(но тк он переменный то я его .* И обозначил) Ну а в 4м случае - тоже самое что и в начале строки. Может как то так: |
|
------- Отправлено: 00:03, 21-06-2017 |
Ветеран Сообщения: 3247
|
Профиль | Отправить PM | Цитировать blackeangel, а что мешает просто использоват шаблон и ничего лишнего? Вообще нужна конкретика, так задача не понятна.
|
Отправлено: 02:10, 21-06-2017 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата shisik:
|
|
Отправлено: 06:20, 21-06-2017 | #3 |
Забанен Сообщения: 793
|
Видимо автор темы считает, что все с ним на одной волне, а потому вполне могут телепатировать что же он там хочет найти.
|
Отправлено: 08:25, 21-06-2017 | #4 |
Старожил Сообщения: 329
|
Профиль | Отправить PM | Цитировать shisik, Iska, greg zakharov,
Мужики, это ж задача из разряда универсальных. Ну если вам надо на основании чего то, то тогда давай те на основе моих данных Скрытый текст
Вначале строки drwxr-xr-x 0/0 0 2017-04-01 09:15 /system/app/ drwxr-xr-x 0/0 0 2017-03-30 20:52 /system/app/AnalyticsCore/ -rw-r--r-- 0/0 4635 2017-03-02 07:30 /system/app/AnalyticsCore/AnalyticsCore.apk drwxr-xr-x 0/0 0 2017-03-30 20:52 /system/app/AnalyticsCore/oat/ drwxr-xr-x 0/0 0 2017-03-30 20:52 /system/app/AnalyticsCore/oat/arm64/ -rw-r--r-- 0/0 742144 2017-03-02 07:30 /system/app/AnalyticsCore/oat/arm64/AnalyticsCore.odex drwxr-xr-x 0/0 0 2017-03-30 20:52 /system/app/AntHalService/ -rw-r--r-- 0/0 11669 2017-03-02 07:30 /system/app/AntHalService/AntHalService.apk drwxr-xr-x 0/0 0 2017-03-30 20:52 /system/app/AntHalService/oat/ drwxr-xr-x 0/0 0 2017-03-30 20:52 /system/app/AntHalService/oat/arm64/ -rw-r--r-- 0/0 62208 2017-03-02 07:30 /system/app/AntHalService/oat/arm64/AntHalService.odex drwxr-xr-x 0/0 0 2017-03-30 20:52 /system/app/AntiSpam/ -rw-r--r-- 0/0 3499207 2017-03-02 07:30 /system/app/AntiSpam/AntiSpam.apk drwxr-xr-x 0/0 0 2017-03-30 20:52 /system/app/AntiSpam/oat/ drwxr-xr-x 0/0 0 2017-03-30 20:52 /system/app/AntiSpam/oat/arm64/ -rw-r--r-- 0/0 1487616 2017-03-02 07:30 /system/app/AntiSpam/oat/arm64/AntiSpam.odex drwxr-xr-x 0/0 0 2017-03-30 20:52 /system/app/AppIndexProvider/ -rw-r--r-- 0/0 12047 2017-03-02 07:30 /system/app/AppIndexProvider/AppIndexProvider.apk drwxr-xr-x 0/0 0 2017-03-30 20:52 /system/app/AppIndexProvider/oat/ drwxr-xr-x 0/0 0 2017-03-30 20:52 /system/app/AppIndexProvider/oat/arm64/ -rw-r--r-- 0/0 131840 2017-03-02 07:30 /system/app/AppIndexProvider/oat/arm64/AppIndexProvider.odex drwxr-xr-x 0/0 0 2017-03-30 20:52 /system/app/ApplicationsProvider/ -rw-r--r-- 0/0 17260 2017-03-02 07:30 /system/app/ApplicationsProvider/ApplicationsProvider.apk drwxr-xr-x 0/0 0 2017-03-30 20:52 /system/app/ApplicationsProvider/oat/ drwxr-xr-x 0/0 0 2017-03-30 20:52 /system/app/ApplicationsProvider/oat/arm64/ -rw-r--r-- 0/0 62208 2017-03-02 07:30 /system/app/ApplicationsProvider/oat/arm64/ApplicationsProvider.odex drwxr-xr-x 0/0 0 2017-03-30 20:52 /system/app/AutoTest/ -rw-r--r-- 0/0 38135 2017-03-02 07:30 /system/app/AutoTest/AutoTest.apk drwxr-xr-x 0/0 0 2017-03-30 20:52 /system/app/AutoTest/oat/ drwxr-xr-x 0/0 0 2017-03-30 20:52 /system/app/AutoTest/oat/arm64/ -rw-r--r-- 0/0 25344 2017-03-02 07:30 /system/app/AutoTest/oat/arm64/AutoTest.odex drwxr-xr-x 0/0 0 2017-03-30 20:52 /system/app/Bluetooth/ -rw-r--r-- 0/0 565609 2017-03-02 07:30 /system/app/Bluetooth/Bluetooth.apk 0/0 0 2017-04-01 09:15 drwxr-xr-x /system/app 0/0 0 2017-03-30 20:52 drwxr-xr-x /system/app/AnalyticsCore 0/0 4635 2017-03-02 07:30 drwxr-xr-x /system/app/AnalyticsCore/AnalyticsCore.apk 0/0 0 2017-03-30 20:52 drwxr-xr-x /system/app/AnalyticsCore/oat 0/0 0 2017-03-30 20:52 drwxr-xr-x /system/app/AnalyticsCore/oat/arm64 0/0 742144 2017-03-02 07:30 drwxr-xr-x /system/app/AnalyticsCore/oat/arm64/AnalyticsCore.odex 0/0 0 2017-03-30 20:52 drwxr-xr-x /system/app/AntHalService 0/0 11669 2017-03-02 07:30 drwxr-xr-x /system/app/AntHalService/AntHalService.apk 0/0 0 2017-03-30 20:52 drwxr-xr-x /system/app/AntHalService/oat 0/0 0 2017-03-30 20:52 drwxr-xr-x /system/app/AntHalService/oat/arm64 0/0 62208 2017-03-02 07:30 drwxr-xr-x /system/app/AntHalService/oat/arm64/AntHalService.odex 0/0 0 2017-03-30 20:52 drwxr-xr-x /system/app/AntiSpam 0/0 3499207 2017-03-02 07:30 drwxr-xr-x /system/app/AntiSpam/AntiSpam.apk 0/0 0 2017-03-30 20:52 drwxr-xr-x /system/app/AntiSpam/oat 0/0 0 2017-03-30 20:52 drwxr-xr-x /system/app/AntiSpam/oat/arm64 0/0 1487616 2017-03-02 07:30 drwxr-xr-x /system/app/AntiSpam/oat/arm64/AntiSpam.odex 0/0 0 2017-03-30 20:52 drwxr-xr-x /system/app/AppIndexProvider 0/0 12047 2017-03-02 07:30 drwxr-xr-x /system/app/AppIndexProvider/AppIndexProvider.apk 0/0 0 2017-03-30 20:52 drwxr-xr-x /system/app/AppIndexProvider/oat 0/0 0 2017-03-30 20:52 drwxr-xr-x /system/app/AppIndexProvider/oat/arm64 0/0 131840 2017-03-02 07:30 drwxr-xr-x /system/app/AppIndexProvider/oat/arm64/AppIndexProvider.odex 0/0 0 2017-03-30 20:52 drwxr-xr-x /system/app/ApplicationsProvider 0/0 17260 2017-03-02 07:30 drwxr-xr-x /system/app/ApplicationsProvider/ApplicationsProvider.apk 0/0 0 2017-03-30 20:52 drwxr-xr-x /system/app/ApplicationsProvider/oat 0/0 0 2017-03-30 20:52 drwxr-xr-x /system/app/ApplicationsProvider/oat/arm64 0/0 62208 2017-03-02 07:30 drwxr-xr-x /system/app/ApplicationsProvider/oat/arm64/ApplicationsProvider.odex 0/0 0 2017-03-30 20:52 drwxr-xr-x /system/app/AutoTest 0/0 38135 2017-03-02 07:30 drwxr-xr-x /system/app/AutoTest/AutoTest.apk 0/0 0 2017-03-30 20:52 drwxr-xr-x /system/app/AutoTest/oat 0/0 0 2017-03-30 20:52 drwxr-xr-x /system/app/AutoTest/oat/arm64 0/0 25344 2017-03-02 07:30 drwxr-xr-x /system/app/AutoTest/oat/arm64/AutoTest.odex 0/0 0 2017-04-01 09:15 /system/app/ drwxr-xr-x 0/0 0 2017-03-30 20:52 /system/app/AnalyticsCore/ drwxr-xr-x 0/0 4635 2017-03-02 07:30 /system/app/AnalyticsCore/AnalyticsCore.apk -rw-r--r-- 0/0 0 2017-03-30 20:52 /system/app/AnalyticsCore/oat/ drwxr-xr-x 0/0 0 2017-03-30 20:52 /system/app/AnalyticsCore/oat/arm64/ drwxr-xr-x 0/0 742144 2017-03-02 07:30 /system/app/AnalyticsCore/oat/arm64/AnalyticsCore.odex -rw-r--r-- 0/0 0 2017-03-30 20:52 /system/app/AntHalService/ drwxr-xr-x 0/0 11669 2017-03-02 07:30 /system/app/AntHalService/AntHalService.apk -rw-r--r-- 0/0 0 2017-03-30 20:52 /system/app/AntHalService/oat/ drwxr-xr-x 0/0 0 2017-03-30 20:52 /system/app/AntHalService/oat/arm64/ drwxr-xr-x 0/0 62208 2017-03-02 07:30 /system/app/AntHalService/oat/arm64/AntHalService.odex -rw-r--r-- 0/0 0 2017-03-30 20:52 /system/app/AntiSpam/ drwxr-xr-x 0/0 3499207 2017-03-02 07:30 /system/app/AntiSpam/AntiSpam.apk -rw-r--r-- 0/0 0 2017-03-30 20:52 /system/app/AntiSpam/oat/ drwxr-xr-x 0/0 0 2017-03-30 20:52 /system/app/AntiSpam/oat/arm64/ drwxr-xr-x 0/0 1487616 2017-03-02 07:30 /system/app/AntiSpam/oat/arm64/AntiSpam.odex -rw-r--r-- 0/0 0 2017-03-30 20:52 /system/app/AppIndexProvider/ drwxr-xr-x 0/0 12047 2017-03-02 07:30 /system/app/AppIndexProvider/AppIndexProvider.apk -rw-r--r-- 0/0 0 2017-03-30 20:52 /system/app/AppIndexProvider/oat/ drwxr-xr-x 0/0 0 2017-03-30 20:52 /system/app/AppIndexProvider/oat/arm64/ drwxr-xr-x 0/0 131840 2017-03-02 07:30 /system/app/AppIndexProvider/oat/arm64/AppIndexProvider.odex -rw-r--r-- 0/0 0 2017-03-30 20:52 /system/app/ApplicationsProvider/ drwxr-xr-x 0/0 17260 2017-03-02 07:30 /system/app/ApplicationsProvider/ApplicationsProvider.apk -rw-r--r-- 0/0 0 2017-03-30 20:52 /system/app/ApplicationsProvider/oat/ drwxr-xr-x 0/0 0 2017-03-30 20:52 /system/app/ApplicationsProvider/oat/arm64/ drwxr-xr-x 0/0 62208 2017-03-02 07:30 /system/app/ApplicationsProvider/oat/arm64/ApplicationsProvider.odex -rw-r--r-- 0/0 0 2017-03-30 20:52 /system/app/AutoTest/ drwxr-xr-x 0/0 38135 2017-03-02 07:30 /system/app/AutoTest/AutoTest.apk -rw-r--r-- 0/0 0 2017-03-30 20:52 /system/app/AutoTest/oat/ drwxr-xr-x 0/0 0 2017-03-30 20:52 /system/app/AutoTest/oat/arm64/ drwxr-xr-x 0/0 25344 2017-03-02 07:30 /system/app/AutoTest/oat/arm64/AutoTest.odex -rw-r--r-- *все создано искусственно, так как никто не знает где что вылезет. моя регулярка такая но она только на 2,3 пункт распространяется. Шаблоном является что то вот такое в различных её вариантах |
|
------- Отправлено: 09:37, 21-06-2017 | #5 |
Старожил Сообщения: 329
|
Профиль | Отправить PM | Цитировать shisik, моя задача состоит в том чтобы заменить этот шаблон на пересчитаные в числа эти буквы. Ну те кто знаком с Linux системами поймет.
Думал использовать replaceAll,но отказался от этой мысли, тк все равно надо читать файл в массив 2д. |
------- Последний раз редактировалось blackeangel, 21-06-2017 в 09:59. Отправлено: 09:54, 21-06-2017 | #6 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата blackeangel:
Цитата blackeangel:
Ваша регулярка может быть такой: Никаких привязок «в начале строки», «в середине строки», «в конце строки» в описанной Вами задаче делать не нужно. WSH
Option Explicit Dim objFSO Dim objRegExp Dim strFile Dim arrContent Dim strLine Dim strPath Set objFSO = WScript.CreateObject("Scripting.FileSystemObject") Set objRegExp = WScript.CreateObject("VBScript.RegExp") objRegExp.Pattern = "[d-](?:[r-][w-][x-]){3}" For Each strFile In Array("0001.txt", "0002.txt", "0003.txt") WScript.Echo strFile With objFSO.OpenTextFile(strFile) arrContent = Split(.ReadAll(), vbCrLf) .Close End With For Each strLine In arrContent If objRegExp.Test(strLine) Then WScript.Echo objRegExp.Execute(strLine).Item(0).Value End If Next Next Set objRegExp = Nothing Set objFSO = Nothing WScript.Quit 0 Если там, как писалось ранее, может быть l вместо d или - — добавьте в шаблон. |
||
Отправлено: 09:59, 21-06-2017 | #7 |
Забанен Сообщения: 793
|
blackeangel, Ваш поток сознания трудно понять.
Цитата blackeangel:
Цитата blackeangel:
|
||
Отправлено: 10:03, 21-06-2017 | #8 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать greg zakharov, он хочет в произвольной строке а) найти заведомо однократно встречающийся перечень прав, б) перевести полученное шаблоном символьное значение в число и в) по тому же шаблону заменить найденное значение на посчитанное. Строго говоря, найти и заменить один вид вот этого: File system permissions - Wikipedia на другой.
|
Отправлено: 10:06, 21-06-2017 | #9 |
Старожил Сообщения: 329
|
Профиль | Отправить PM | Цитировать greg zakharov, без паники
код мой такой public static String[] parsinganytextfile(String line) { ArrayList<String> result = new ArrayList<String>(); Pattern pattern = Pattern.compile("^(.*)(.*[r|-][w|-][x|-][r|-][w|-][x|-][r|-][w|-][x|-])(.*)$"); Matcher matcher = pattern.matcher(line); if (matcher.find()) { for (int i = 1; i <= matcher.groupCount(); ++i) { result.add(matcher.group(i)); } } return result.toArray(new String[0]); } public static void RecalcRules() { String InputTextFile; JFileChooser fileopen = new JFileChooser(); int ret = fileopen.showDialog(null, "Открыть файл"); if (ret == JFileChooser.APPROVE_OPTION) { File file = fileopen.getSelectedFile(); InputTextFile = file.getAbsolutePath(); } else { return; } String OutTextFile = InputTextFile + "_new"; //погнали String[][] TextMass = new String[0][]; try { TextMass = Files.lines(Paths.get(InputTextFile)) .map(g -> parsinganytextfile(g)) .toArray(String[][]::new); } catch (IOException e) { e.printStackTrace(); } for (int i = 0; i < TextMass.length; i++) { if (TextMass[0].length == 1) { Functions.writefile(OutTextFile, getDigits(TextMass[i][0].replace("s", "x"))); } if (TextMass[0].length == 2) { Functions.writefile(OutTextFile, getDigits(TextMass[i][0].replace("s", "x")) + " " + TextMass[i][1]); } else { Functions.writefile(OutTextFile, TextMass[i][0] + " " + getDigits(TextMass[i][1].replace("s", "x")) + " " + TextMass[i][2]); } } } public static String getDigits(String s) { if (!s.matches("^.*([r|-][w|-][x|-]){3}$")) { throw new IllegalArgumentException("Achtung!"); } Function<String, String> rwxMapper = rwx -> String.valueOf(Integer.parseInt(rwx.replaceAll("[rwx]", "1").replaceAll("-", "0"), 2)); return Arrays.stream(s.substring(s.length() - 9).split("(?<=\\G...)")).map(rwxMapper).collect(joining()); } Iska, бинго Но не факт что это тот способ верный. |
------- Отправлено: 10:09, 21-06-2017 | #10 |
|
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
.NET - Регулярное выражение | LilLoco | Программирование и базы данных | 19 | 04-05-2016 09:36 | |
CMD/BAT - [решено] Регулярное выражение | micolo | Скриптовые языки администрирования Windows | 5 | 06-03-2014 20:23 | |
Debian/Ubuntu - grep регулярное выражение | Forpost | Общий по Linux | 3 | 25-05-2012 00:50 | |
Регулярное выражение | venuko | Вебмастеру | 11 | 02-08-2010 18:18 | |
Регулярное выражение | benya | Вебмастеру | 27 | 26-08-2005 14:34 |
|