Строка Прописные буквы в шаблоне Java - PullRequest
0 голосов
/ 29 сентября 2011

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

Что такое представление шаблона, содержащего (AZ) * и (\\ p {Punct}) * и (0-9) * и (\\ s), и все символы шаблона были в верхнем регистре.

т.е.

  • ШАБЛОН {001}

  • ДРУГОЙ ШАБЛОН (002-005)

изменить: только что я получил этот вопрос на вопрос выше:

* * Тысяча двадцать-один (([A-Z]) * | (\\ р {Punct}) * | ([0-9]) * | (\\ с) *) *

новая проблема заключается в получении заглавной строки со строкой из некоторой строки, разделенной символом «|»:

тогда я использовал код, подобный приведенному ниже:

            String theString = "";
            String theUppercase = "";
            Pattern level5Patter = Pattern.compile("(([A-Z])*|(\\p{Punct})*|([0-9])*|(\\s)*)*\\|");
            Matcher level5Matcher = level5Patter.matcher(strFileContent);
            while(level5Matcher.find()){
                String resultLevel5 = level5Matcher.group();
                if(resultLevel5.toUpperCase().equals(resultLevel5)){
                    System.out.println(resultLevel5);
                }
                else{
                    theString=theString+resultLevel5;
                }
            }

подстрока будет выглядеть так:

НАЗВАНИЕ ЭТИХ ДАННЫХ ВСЕГДА ВЕРХНЕЕ, ИКОГДА СОДЕРЖИТ ЦИФРОВОЙ 1.0.0.0.0 ДАЖЕ ПУНКТУАЦИЯ {}

Источник String выглядит следующим образом:

Head 1 | Head 1.0 | Head 1.0.0 | Head 1.0.0.0 | НАЗВАНИЕ ЭТИХ ДАННЫХ ВСЕГДА ВЕРХНИЙ И ИНОГДА СОДЕРЖИТ ЦИФРОВОЙ 1.0.0.0.0 ДАЖЕ ПУНКТУАЦИЯ {} | первое описание данных иногда содержит UPPERCASE и числовое значение 1010 и пунктуация {} | 01234 | Голова 1 | Голова 1.0 | Голова 1.0.0 | Голова 1.0.0.1 | НАЗВАНИЕ ЭТИХ ДАННЫХ ВСЕГДА ВЕРХНЕЕ, И В НЕКОТОРЫХ СОДЕРЖАЩИХ ЦИФРАХ 1.0.0.1.0 ДАЖЕ ПУНКТУАЦИЯ | первое описание данных когда-то содержит ВЕРХНИЙ МОДУЛЬ и числовой 1010 и пунктуация {} | 56789 |

Заранее спасибо.

Ответы [ 2 ]

2 голосов
/ 29 сентября 2011

Создайте класс символов и вставьте в него все, что вы хотите разрешить

Pattern p = Pattern.compile("^[A-Z0-9\\p{P}\\s]+$");

[A-Z0-9\\p{P}\\s] это класс символов, который допускает AZ, 0-9, Знаки пунктуации и пробелы.

^ - это якорь для начала строки

$ - это якорь для конца строки

+ - это квантификатор, который позволяет

Более юникодным подходом будет

^[\\p{Lu}\\p{N}\\p{P}\\s]+$

\\p{Lu} заглавная буква со строчным вариантом.

\\p{N} любой вид числового символа в любом скрипте.

Для получения дополнительной информации см. здесь, на регулярном-экспресс-сайте

0 голосов
/ 29 сентября 2011

Должен признать, мне не совсем понятно, о чем вы спрашиваете.Не могли бы вы попытаться перефразировать ваш вопрос?

В предположении, что вы пытаетесь объединить некоторые классы символов, другими словами, вам нужен шаблон, который принимает любую строку, состоящую из любой последовательности символов из классов символов '[AZ] ',' \ p {Punct} 'и' [0-9] ', это может выглядеть примерно так:' ([A-Z0-9] | \ p {Punct}) * '.Остерегайтесь двойного экранирования при кодировании в виде строки:

Pattern p = new Pattern("([A-Z0-9]|\\p{Punct})*");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...