Что такое эквивалент Java для этого preg_replace?

<?php $str = "word <a href=\"word\">word</word>word word"; $str = preg_replace("/word(?!([^<]+)?>)/i","repl",$str); echo $str; # repl <word word="word">repl</word> ?> 

источник: http://pureform.wordpress.com/2008/01/04/matching-a-word-characters-outside-of-html-tags/

К сожалению, моему проекту нужны семантические библиотеки, доступные только для Java …

// Спасибо Celso

Related of "Что такое эквивалент Java для этого preg_replace?"

Используйте метод String.replaceAll ():

 class Test { public static void main(String[] args) { String str = "word <a href=\"word\">word</word>word word"; str = str.replaceAll("word(?!([^<]+)?>)", "repl"); System.out.println(str); } } 

Надеюсь это поможет.

Чтобы перевести это регулярное выражение для использования в Java, все, что вам нужно сделать, это избавиться от / delimiters и изменить конечный i на встроенный модификатор (?i) . Но это не очень хорошее регулярное выражение; Я бы использовал это вместо этого:

 (?i)word(?![^<>]++>) 

Согласно функции Debug от RegexBuddy, когда он пытается сопоставить word в <a href="word"> , исходное регулярное выражение требует 23 шага, чтобы отклонить его, в то время как это занимает всего семь шагов. Фактический код Java

 str = str.replaceAll("(?i)word(?![^<>]++>)", "repl"); 

Прежде чем предоставить дополнительный ответ, пытаетесь ли вы проанализировать html-документ? Если это так, не используйте регулярные выражения, используйте синтаксический анализатор html.