Java Regex найти слово без конца = - PullRequest
2 голосов
/ 01 июня 2011

В настоящее время я борюсь с анализатором текста, чтобы отформатировать слова, защищенные Java, с собственными HTML-тегами.

поэтому я хочу, чтобы

class HelloWorld

отображался в виде строки

<span class= "class">class</span> HelloWorld

Что мне удалось получить, однако класс является защищенным словом, поэтому я хочубыть в состоянии различить, используя регулярные выражения между

class

и

"class" or class=

Вот мой текущий код.

word = word.replaceAll("\\b"+javaWord+"\\b",addTag(javaWord,javaWord));

Действительно трудно, так что цените любую помощь?

Ответы [ 2 ]

2 голосов
/ 01 июня 2011

Вместо "\\b"+javaWord+"\\b", попробуйте

"(?<![\\w\"])"+javaWord+"(?![\\w\"=])"

Но @sgusc делает хороший вывод: эту технику нельзя расширить для работы с ключевыми словами в более длинных строковых литералах или в комментариях.

0 голосов
/ 01 июня 2011

вам лучше создать свой собственный конечный автомат, который перебирает ввод, каждый раз, когда вы видите пробелы (или просто не алфавитные символы), вы затем очищаете буфер в зависимости от того, какое слово вы только что передали

, так что когда вы передаете ", вы игнорируете до следующего (без экранирования) " (то же самое с < и >) (или просто видите это как одно слово с <span class="string"> вокруг него;)

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