2012-05-10 3 views
0

Я пытаюсь определить строки (что означает текст в двойных кавычках) в моем JTextPane используя следующий кодJTextPane: Определение строк

Pattern string= Pattern.compile("\"/\"/.*"); 
Matcher matcher = string.matcher(content); 

while (matcher.find()) { 
    document.setCharacterAttributes(matcher.start(), matcher.end() - matcher.start(), textPane.getStyle("red"), true); 
} 

Но приведенный выше код не идентификации строк правильно. Я думаю, что образец, который я дал, ошибочен. Пожалуйста, помогите мне, исправив шаблон.

Спасибо всем! Я очень ценю вашу помощь! Поскольку все ваши ответы верны, я затрудняюсь выбрать лучший ответ, поэтому я дал каждому из вас голос. Надеюсь, вы не против :)

Еще раз спасибо! Я действительно ценю это :)

+0

Попробуйте это http://stackoverflow.com/questions/792474/matching-text-in-quotes-newbie – Bitmap

+0

Без эскизов и закрывающих кавычек ваше выражение соответствует '' /"/.* '. Это то, что вы намеревались? Я не вижу причины для косой черты. – Borodin

ответ

1

Правильное выражение это:

Pattern.compile("\"[^\"]*\""); 
+0

Спасибо Matzi :) Я очень ценю это :) –

1
String s = "jsdfjh shfslfh \"ksfsdkflsdaf\" 2346237846 ufhusdhfu usfhsdfis \"sadhgbshad78hgshd\" jhsdjs"; 
     Pattern p = Pattern.compile("\"{1}[.[^\"]]*\"{1}"); 
     Matcher m = p.matcher(s); 
     while(m.find()){ 
      System.out.println(s.substring(m.start(), m.end())); 
     } 
+0

{1} в вашем регулярном выражении излишни. И может ли кто-нибудь помочь мне понять, как '[.^\"]] * 'В регулярном выражении Java работает так же, как' [^ \ "] *' делает? – Borodin

+0

Спасибо Bitmap :) Я очень ценю это :) –

+0

@Borodin: В Java класс символов, такой как '[^ \"] ', встроенный в другой класс символов, действует так же, как и сам по себе. Это значит, оператор пересечения '&&', как в '[a-z && [^ q]]' (любая буква, кроме 'q'). Поэтому '[. [^ \"]] 'соответствует' .' или любому символу, который не является ' «' - который, конечно, включает '.', так что эта часть так же избыточна, как и' {1} '' quantifiers. '" \ "{1} [. [^ \"]] * \ "{ 1} "' точно эквивалентен '" \ "[^ \"] * \ "" '. –

1

Регулярное выражение, я предлагаю вам использовать это "[^"]*". Цитируется и исчезает, что доходит до "\"[^\"]*\"".

Так что попробуйте

Pattern string= Pattern.compile("\"[^\"]*\""); 

но имейте в виду, что это не будет правильно найти строки, содержащие двойные кавычки, так что я надеюсь, что вы JTextPane не содержит Java.

Смежные вопросы