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 的语义库...
// 谢谢塞尔索
<?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>
?>
source: http://pureform.wordpress.com/2008/01/04/matching-a-word-characters-outside-of-html-tags/
Unfortunality my project needs a semantic libs avaliable only for Java...
// Thanks Celso
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
使用 String.replaceAll() 方法:
希望这会有所帮助。
Use the String.replaceAll() method:
Hope this helps.
要将该正则表达式翻译为在 Java 中使用,您所要做的就是去掉
/
分隔符并将尾随的i
更改为内联修饰符(?我)
。但这不是一个很好的正则表达式;我会用这个来代替:根据 RegexBuddy 的调试功能,当它尝试匹配
中的
word
时,原始正则表达式需要 23拒绝它的步骤,而这个只需要七步。实际的Java代码是To translate that regex for use in Java, all you have to do is get rid of the
/
delimiters and change the trailingi
to an inline modifier,(?i)
. But it's not a very good regex; I would use this instead:According to RegexBuddy's Debug feature, when it tries to match the
word
in<a href="word">
, the original regex requires 23 steps to reject it, while this one takes only seven steps. The actual Java code is在提供进一步的答案之前,您是否尝试解析 html 文档?如果是这样,请不要使用正则表达式,而使用 html 解析器。
Before providing a further answer, are you trying to parse an html document? If so, don't use regexes, use an html parser.