Как проверить, начинается ли число со специальных символов с помощью регулярного выражения - PullRequest
1 голос
/ 09 января 2012

Используя следующее регулярное выражение, я могу получить, если строка начинается с a или b.

        Pattern p = Pattern.compile("^(a|b)");
        Matcher m = p.matcher("0I am a string");
        boolean b = m.find();
        System.out.println("....output..."+b);

Но мне нужно проверить, начинается ли строка с каких-то специальных символов, таких как * или ^ и т. Д. В этом случае следующее регулярное выражение дает ошибку шаблона.

Pattern p = Pattern.compile("^(*|^)");
        Matcher m = p.matcher("0I am a string");
        boolean b = m.find();

        System.out.println("....output..."+b);

Как проверить, начинается ли число с * или ^, используя регулярное выражение

Ответы [ 5 ]

3 голосов
/ 09 января 2012

Символы типа |*.[](){}?+^$ имеют особое значение в регулярном выражении.Используйте [\^*] (в пределах [] только ] и - имеют особое значение) или экранируйте их как ^(\*|\^).

0 голосов
/ 11 января 2012

Спасибо математическому кофе за приятный ответ

Наконец, я нашел решение, используя ^[*^] в качестве регулярного выражения, чтобы проверить, содержит ли строка * или ^

Исходный код

Pattern p = Pattern.compile("^[*^]");
        Matcher m = p.matcher("I am a string");
        boolean b = m.find();

        System.out.println("....output..."+b);
0 голосов
/ 09 января 2012

Вы можете попробовать '(\^|\*)[0-9]+' для этой цели.

Поскольку ^ и * являются специальными символами в регулярном выражении, вам необходимо поставить \ перед ними.

Если вы хотите, чтобы вся строка совпадала с ним, поместите регулярное выражение между ^ и $.

0 голосов
/ 09 января 2012

Используйте это:

"0I am a string".matches("[\\^*].*");
0 голосов
/ 09 января 2012

* и ^ - это специальные символы в регулярном выражении, которые необходимо экранировать, поэтому вам нужно будет использовать \ для выхода из него.

См. эту ссылку для получения дополнительной информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...