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,如本文所述