我需要在网页上显示word文档。我使用名为Docx4j的库将.doc转换为html。这工作正常。但是,我收到了以下格式的超链接。
To search on google go to this link [#?] HYPERLINK \"http://www.google.com/\" [#?][#?] google[#?] and type the text.
我可以将其转换为
To search on google go to this link (http://www.google.com) google and type the text.
使用以下代码
String myText = "To search on google go to this link [#?] HYPERLINK \"http://www.google.com/\" [#?][#?] google[#?] and type the text.";
System.out.println(myText);
String firstReplace = myText.replaceAll("\\[", "").replaceAll("\\]", "").replaceAll("#\\?", "");
System.out.println(firstReplace);
String secondReplace = firstReplace.replaceAll("HYPER\\S+\\s+\"", "(");
System.out.println(secondReplace);
String finalReplace = secondReplace.replaceAll("/*\".", ")");
System.out.println("\n" + finalReplace);
有人可以提供一个正则表达式将上面的字符串转换为
To search on google go to this link google (http://www.google.com) and type the text.
- 编辑 -
有些链接显示为
[#?] HYPERLINK \"http://www.google.com/\" [#?][#?] google page[#?]
我应该将它们改为
google page (http://www.google.com)
我该怎么做?
答案 0 :(得分:2)
您可以使用组引用来匹配括号后面的单词google
。
您可以替换以下正则表达式的结果:
'(\([^)]*\))\s?(\w+)'
以下:
'$2 $1'
您可以使用str.replaceAll()
功能实现此目标。
精化:
第一个捕获组(\([^)]*\))
将匹配括号之间的部分,[^)]*
是一个否定的字符类,它匹配除右括号之外的任何字符组合。
第二个(\w+)
将匹配该部分之后的字词,\w+
将匹配任何单词字符组合。
答案 1 :(得分:0)
尽早删除[#?]标记,意味着您丢失了必要的信息,以便稍后进行必要的文字调整。您输入的基本模板是:
[#?] HYPERLINK *target* [#?] [#?] *clickable textual description of link* [#?]
那么为什么不使用这些标记对你有利呢?
像这样的一些正则表达式(注意:没有经过测试,可能是错误的,但只是为了给你一个基本的想法):
mystring.replaceAll("\\[#\\?\\] HYPERLINK (.*) \\[#\\?\\] \\[#\\?\\] (.*) \\[#\\?\\]", "$2 ($1)");
以上内容旨在为您提供Google页面(http://www.google.com)&#34;。但我也会质疑为什么要这样显示它。通常,对于HTML网页,您希望它为<a href="http://www.google.com">google page</a>
。要做到这一点,只需更改上面的代码即可。