Регулярные выражения для "C: \\" - PullRequest
0 голосов
/ 26 февраля 2011

Я пытаюсь найти регулярные выражения, которые могут найти строку "C: \\".

Мой код:

String test = "C:\\";  
String regex = "[a-z]*[A-Z]*[:]*\\";  
if(test.matches(regex))  
    System.out.println("Success!");  
else  
    System.out.println("Failure!");  

Я получаю исключение PatternSyntaxException.Я пробовал много регулярных выражений, и результат тот же.

Как мне это решить?

Ответы [ 5 ]

2 голосов
/ 26 февраля 2011

Простой (но, вероятно, бесполезный) ответ: "". * ".

В этом случае вы, очевидно, хотите что-то ближе к: "[a-zA-Z]:\\\\". Для этого требуется ровно одна буква, затем двоеточие и обратная косая черта. Предполагая, что ваша строка должна представлять корень некоторого диска в Windows, она должна быть намного ближе, чем в любом случае.

0 голосов
/ 26 февраля 2011

Почему бы просто не использовать String.contains("C:\\")?

0 голосов
/ 26 февраля 2011

Если вы пытаетесь найти C:\ в явном виде, вы можете просто использовать String regex ="C:\\"; Не очень гибкий, но подходит точно.

То, что вы, вероятно, ищете, это что-то вроде String regex = "[A-Z]:\\\\"; Это"Соответствует одному символу в диапазоне между" A "и" Z "", затем "Соответствует символу": "", затем "Соответствует символу \".Если вам нужно включить строчные буквы, используйте String regex = "[a-zA-Z]:\\\\";, который соответствует одному символу между "a" и "z" или между "A" и "Z".

0 голосов
/ 26 февраля 2011

Вам нужно выполнить двойной escape, один раз для escape-строки Java и один раз для escape-выражения:

String test = "C:\\";
String regex = "[a-zA-Z]:\\\\";
if ...
0 голосов
/ 26 февраля 2011

Последовательность \\ имеет особое значение в большинстве языков.Вот почему это плохой выбор в качестве разделителя пути. Проблема, с которой вы здесь сталкиваетесь, заключается в том, что она имеет особое значение в Java и в регулярных выражениях.Это означает, что \\\\ превращается в \\ в Java и \ в регулярное выражение.

Кстати, я думаю, вам нужно просто "[a-zA-z]: \\\\"

OMG, оно также имеет особое значение для SO: P

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