1 package us.codecraft.webmagic.selector;
2
3 import java.util.List;
4 import java.util.regex.Matcher;
5 import java.util.regex.Pattern;
6 import java.util.regex.PatternSyntaxException;
7
8
9
10
11
12
13
14 public class ReplaceSelector implements Selector {
15
16 private String regexStr;
17
18 private String replacement;
19
20 private Pattern regex;
21
22 public ReplaceSelector(String regexStr, String replacement) {
23 this.regexStr = regexStr;
24 this.replacement = replacement;
25 try {
26 regex = Pattern.compile(regexStr);
27 } catch (PatternSyntaxException e) {
28 throw new IllegalArgumentException("invalid regex", e);
29 }
30 }
31
32 @Override
33 public String select(String text) {
34 Matcher matcher = regex.matcher(text);
35 return matcher.replaceAll(replacement);
36 }
37
38 @Override
39 public List<String> selectList(String text) {
40 throw new UnsupportedOperationException();
41 }
42
43 @Override
44 public String toString() {
45 return regexStr + "_" + replacement;
46 }
47
48 }