2013-10-14 2 views
-1

나는 java를 사용하고 있습니다. 텍스트가 있는데이 텍스트에는 링크가 거의 없습니다. 그들 중 일부는 특정 웹 사이트에 링크되며 이러한 링크는 변경되지 않습니다. 나머지는하지 않으며 나는이 연결을 연결에 의해 교환하고 싶다. 내가 함께 replaceAll() 방법 사용 :텍스트의 특정 링크 바꾸기

String input = "my text"; 
String regex = "<a href=\"[^\"]+\">[^<]+</a>"; 
String output = input.replaceAll(regex, "<a href=\"myweb.com\">my web</a>"); 

그러나 내 텍스트에있는 모든 링크를 대체하고 내가 그것을 요청하는 방법을 몰라 그냥 링크를 대체합니다. 어떻게하면됩니까? 감사합니다 업데이트 : input은 내용과 링크가없는 기사 일뿐입니다.

<a href=\"[^\"]+\">[^<]+</a> 

+0

귀하의 정규식 당신이 그것을에 추가 할 수 있도록 myweb.com''로 대체해야하는지 인식하지 못합니다. – A4L

+0

귀하의 질문에 적절한 입력 텍스트를주십시오 – SSP

+0

대체하고 싶지 않은 URL에 일반적인 것이 있어야합니다. – SSP

답변

1

[^\"]+당신이 샘플을 통해 다음과 같은 정규식

<a href=\".*(foo\\.com|bar\\.org).*\">[^<]+</a> 

을 시도 할 수있는 "

아닌 모든 charachter 일치하기 때문에 그것은 불가능했을 것입니다 텍스트

귀하의 의견은 HTML 적절한 방법은 HTML을 구문 분석하는 것입니다의 fragment 것으로 보이기 때문에,

my text 
Foo foo foo 
<a href="myweb.com">my web</a> 
Bar bar bar 
<a href="myweb.com">my web</a> 
bla bla bla 

그러나 :

@Test 
public void replaceLinks() { 
    String regex = "<a href=\".*(foo\\.com|bar\\.org).*\">[^<]+</a>"; 
    String output = input.replaceAll(regex, "<a href=\"myweb.com\">my web</a>"); 
    System.out.println(output); 
} 

출력은 다음과 같습니다

static String input = "my text\r\n" + 
     "Foo foo foo\r\n" + 
     "<a href=\"foo.com\">Foo site</a>\r\n" + 
     "Bar bar bar\r\n" + 
     "<a href=\"bar.org\">Bar site</a>\r\n" + 
     "bla bla bla\r\n" + 
     "\r\n" + 
     ""; 

작은 테스트입니다 파서를 JSoup과 같이 만들고 모든 링크를 얻은 다음 패턴을 href 속성에 적용합니다. 일치하는 경우 새 링크를 요소로 설정하여 대체를 수행하십시오.

완료되면 조각 bak를 작성하십시오.

@Test 
public void replaceLinksJSoup() { 
    Document doc = Jsoup.parse(input); 
    Elements links = doc.getElementsByTag("a"); 
    Pattern pattern = Pattern.compile(".*(foo\\.com|bar\\.org).*"); 
    for (Element link : links) { 
     String linkHref = link.attr("href"); 
     if (pattern.matcher(linkHref).matches()) { 
      link.attr("href", "myweb.com"); 
      link.text("my web"); 
     } 
    } 
    System.out.println(doc.body().html()); 
} 

출력 :

my text Foo foo foo 
<a href="myweb.com">my web</a> Bar bar bar 
<a href="myweb.com">my web</a> bla bla bla 
관련 문제