2014-01-26 5 views
-2

Я пытаюсь разбить строку на каждом. (период), но периоды являются символом, используемым регулярными выражениями java. Пример кода,Java regex игнорировать '.' symbol

String outstr = "Apis dubli hre. Agro duli demmos,".split("."); 

Я не могу избежать символа периода, так как еще я могу заставить Java игнорировать его?

+0

Интересно, как это компиляция. 'split' возвращает массив. Но чтобы ответить на ваш вопрос, вам нужно избежать '.' –

+0

. Вы также можете использовать' [.] ', Поскольку точка потеряет значение (regex) в классе символов. – HamZa

ответ

2

Я не могу избежать периода символа, так как еще я могу получить Java игнорировать его?

Вы можете избежать символа периода, но сначала вы должны рассмотреть, как интерпретируется строка.

В строке Java (который подается в Pattern.compile(s)) ...

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

Что вы хотите

String outstr = "Apis dubli hre. Agro duli demmos,".split("\\."); 
+0

ХА, спасибо. Java иногда бывает странной, со всеми ее слоями. – Maurdekye

+0

Добро пожаловать :) – aliteralmind

5

Вместо этого использовать "\\.". Просто использование . означает «любой символ».