[java.util.regex.Pattern] Грамотный шаблон для символов типа "\", "|"
используй в этом форуме
[code] [/code]
Я в курсе про
Просто он не поддерживает форматирование, а я хотел выделить цветом.
п.с.: вот так Надежда и умирает - смотришь, что кто-то ответил, а на самом деле нет
.
Просто он не поддерживает форматирование, а я хотел выделить цветом.
п.с.: вот так Надежда и умирает - смотришь, что кто-то ответил, а на самом деле нет

прошу прощения 

И еще, я правильно понимаю, что "" используются и для указания на искомую подстроку, и для группировки элементов (например для указания их численности)?
Или для группировки есть другая конструкция?
Или для группировки есть другая конструкция?
хмм... у меня
System.console.format("%b%n", Pattern.compile("(\\d+)\\s+(\\w+)\\s+(\\d+)\\s+\\|(.+?)\\|\\|(.+?)\\|").matcher("123 FGH 567 |Земля||Луна|").find;
"true" пишет
System.console.format("%b%n", Pattern.compile("(\\d+)\\s+(\\w+)\\s+(\\d+)\\s+\\|(.+?)\\|\\|(.+?)\\|").matcher("123 FGH 567 |Земля||Луна|").find;
"true" пишет
Но ни "|", ни "\|", ни "[|]" не работает (шаблон сразу ломается).
странно это. Т.к. '\' '|' - служебные символы, то в регэкспе ,доступ к таким символам через \, т.е. "\\ '\|'
соответсвенно. Т.к. один \ виндой сжирается , то
[\\|\\\\](.+) должно работать
Т.к. один \ виндой сжирается

только узнал про это? 

[\\|\\\\](.+) должно работать
Я знал, что она жадная, но не думал, что настолько
Я правильно понял, что
[\\|\\\\]есть выбор из двух символов:
\\|(который как раз "|") и
\\\\(который "\")?
В принципе я заменил
\\p{Punct} на \x5Си
\x7Ссоответственно, но такой вариант менее читабелен.
п.с.: ну почему использование тега код так некомпактно

А у тебя ось какая?
Linux?
Linux?
ось в Яве почти не важна 
один раз эскейпим для регэкспа: «\» -> «\\», «|» -> «\|»,
второй раз — для Явы: «\\» -> «\\\\», «\|» -> «\\|»
Венда голодает

один раз эскейпим для регэкспа: «\» -> «\\», «|» -> «\|»,
второй раз — для Явы: «\\» -> «\\\\», «\|» -> «\\|»
Венда голодает
Бедная
Давайте проведем сбор пожертвований в пользу голодающей винды
Всем спасибо, буду пробовать
Давайте проведем сбор пожертвований в пользу голодающей винды
Всем спасибо, буду пробовать

А вообще, попробуй Groovy юзать. Это такой Perl, но поддерживающий синтаксис Java и интегрирующийся с ней, как только можно. Для всяких скриптов рулит неимоверно. И, поскольку регулярки встроены в язык, нету этого дебильного двойного эскейпинга.
Спасибо, посмотрю 

Вариант с большим кол-вом слэшей прокатил 
Возник такой вопрос (полагаю, что ответ отрицательный, но вдруг...):
Шаблоны типа (регэксп)+ этот класс поддерживает, но выводит только последнее вхождение
Можно как-то получить их все?
А то получается, что groupCount практической пользы не несет (ведь он равен кол-ву в шаблоне).
А то самое то бы было: получаем groupCount-ом реальное кол-во получившихся групп и обрабатываем их за раз.
Иерархии так удобно обрабатывать.

Возник такой вопрос (полагаю, что ответ отрицательный, но вдруг...):
Шаблоны типа (регэксп)+ этот класс поддерживает, но выводит только последнее вхождение

Можно как-то получить их все?
А то получается, что groupCount практической пользы не несет (ведь он равен кол-ву в шаблоне).
А то самое то бы было: получаем groupCount-ом реальное кол-во получившихся групп и обрабатываем их за раз.
Иерархии так удобно обрабатывать.
Можно как-то получить их все?вроде нельзя
надо чтото типа while(match) по этому подвыражению делать и по всем проходить
Я так и думал 

Что я и сделал.

надо чтото типа while(match) по этому подвыражению делать и по всем проходитьНаверное лучше использовать старый добрый split

Что я и сделал.
Уж не знаю насчёт джавы, но в пхп есть preg_match, который ведёт себя как раз так, как ты описал; и есть preg_match_all, который ловит все совпадения. Может, и тут так же?
Оставить комментарий
durka82
и тп.Например для строки: "123 FGH 567 |Земля||Луна|" - приходится использовать шаблон
(\\d+) \\s* (.+\\b)\\s* (\\d+) \\s*\\B\\p{Punct}(.+)\\p{Punct}{2}(.+)\\p{Punct}, где в качестве "|" используется "\p{Punct}" (красным выделил выдираемые части текста/шаблона).Это и не очень правильно, так как там в принципе могут стоять и другие символы.
Но ни "|", ни "\|", ни "[|]" не работает (шаблон сразу ломается).
В чем тут дело?
Что я делаю не так?
И вообще, с интересом выслушаю все советы на тему, как это лучше написать