[^\"]+
이 당신이 샘플을 통해 다음과 같은 정규식
<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
출처
2013-10-14 11:33:54
A4L
귀하의 정규식 당신이 그것을에 추가 할 수 있도록 myweb.com''로 대체해야하는지 인식하지 못합니다. – A4L
귀하의 질문에 적절한 입력 텍스트를주십시오 – SSP
대체하고 싶지 않은 URL에 일반적인 것이 있어야합니다. – SSP