Jmeter – beanshell中的正则表达式(matcher()/ pattern())正在削减国家字符
我需要从服务器响应数据中删除一些单词。
使用正则表达式提取器我得到
Działalność lecznicza.
从那我只需要:“Działalnośćleccnicza”
所以我在Beanshell写一个程序应该这样做,因为我得到了一个问题
“lecznicza lecznicza”
这是我的计划:
import java.util.regex; import java.util.regex.Matcher; import java.util.regex.Pattern; String pattern = "\\w+(?=\\<)"; String co = vars.get("tresc"); int len = Integer.parseInt(vars.get("length")); String phrase=""; StringBuffer sb = new StringBuffer(); Pattern r = Pattern.compile(pattern); Matcher m = r.matcher(co); for(i=0; i < len ;i++){ if (m.find()){ strbuf = new StringBuffer(m.group(0)); } else { phrase="notfound"; } sb.append(" "); sb.append(strbuf); } phrase = sb.toString(); return phrase;
tresc – 是我提取模式词的源头。 长度 – 告诉我我正在提取多少个单词。
程序适用于没有国家字符的短语。 这就是为什么我认为编码或某处有问题:
Pattern r = Pattern.compile(pattern); Matcher m = r.matcher(co);
但我不知道如何更改我的代码。
\w
与unicode不匹配。 要匹配正则表达式中的unicode,可以使用\p{L}
:
String pattern = "\\p{L}+(?=\\<)";
虽然对于这种类型的工作,我建议使用XML解析器,因为正则表达式完全不适合解析HTML / XML,如本文所述