2015-11-06 60 views
2

我需要在网页上显示word文档。我正在使用名为Docx4j的库将.doc转换为html。这工作正常。但是,我以下面的格式获取超链接。如何使用正则表达式从URL中获取域名?

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. 

- EDIT--

有一些链接,其显示为

[#?] HYPERLINK \"http://www.google.com/\" [#?][#?] google page[#?] 

我应该改变他们

google page (http://www.google.com) 

我该怎么办呢?

回答

2

您可以使用组引用来匹配括号后面的单词google

可以替换以下的正则表达式的结果:

'(\([^)]*\))\s?(\w+)' 

有了以下几点:

'$2 $1' 

可以使用str.replaceAll()功能这一目标。

精化:

第一捕获组(\([^)]*\))将括号之间的部分相匹配,[^)]*是匹配字符的任意组合,其除了闭括号一个否定的字符类。

而第二个(\w+)将匹配该部分之后的词,\w+将匹配单词字符的任意组合。

+0

可以请您详细说明吗? –

+0

@SumodhS结帐编辑。 – Kasramvd

+0

有什么方法可以让我“http://www.google.com/”直接替换为“(http://www.google.com/)”?我不能在这个问题中使用这个脚本,因为我拥有的是一个HTML并替换掉了“我的HTML –

0

只要您在问题中删除[#?]标记,就意味着您将失去基本信息以便稍后进行必要的文本调整。您输入的基本模板是:

[#?] HYPERLINK *target* [#?] [#?] *clickable textual description of link* [#?] 

那么,为什么你不使用这些标记对你有利呢?

一些正则表达式这样的(注:没有测试过,可能是错误的,但只给你基本的想法):

mystring.replaceAll("\\[#\\?\\] HYPERLINK (.*) \\[#\\?\\] \\[#\\?\\] (.*) \\[#\\?\\]", "$2 ($1)"); 

以上的目的是给你“谷歌网页(http://www.google.com)”。但我也会质疑你为什么要这样展示它。通常对于HTML网页,您希望它是<a href="http://www.google.com">google page</a>。要做到这一点,只需更改上面的代码。