首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >这个preg_replace对应的Java是什么?

这个preg_replace对应的Java是什么?
EN

Stack Overflow用户
提问于 2010-07-22 08:27:02
回答 3查看 13.7K关注 0票数 7
代码语言:javascript
复制
<?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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-07-22 11:13:07

使用String.replaceAll()方法:

代码语言:javascript
复制
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);
  }
}

希望这能有所帮助。

票数 13
EN

Stack Overflow用户

发布于 2010-07-22 16:01:28

要将该正则表达式转换为在Java语言中使用,您需要做的就是去掉/分隔符,并将尾随的i更改为内联修饰符(?i)。但这不是一个很好的正则表达式;我会使用下面的代码:

代码语言:javascript
复制
(?i)word(?![^<>]++>)

根据RegexBuddy的Debug特性,当它尝试匹配<a href="word">中的word时,原始的正则表达式需要23个步骤才能拒绝它,而这个只需要7个步骤。实际的Java代码是

代码语言:javascript
复制
str = str.replaceAll("(?i)word(?![^<>]++>)", "repl");
票数 3
EN

Stack Overflow用户

发布于 2010-07-22 08:29:55

在提供进一步的答案之前,您是否正在尝试解析html文档?如果是这样的话,不要使用正则表达式,而要使用html解析器。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3304925

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档