我必须使用Dart从响应数据中提取短语字符串,并且使用此正则表达式做得很好:
\B"[^"]*"\B
它与短语匹配得很好,但不包括亚洲汉字字符(如日语,中文,韩语,俄语等)。
var regex = RegExp(r'\B"[^"]*"\B');
Iterable<Match> matches = regex.allMatches(returnString);
matches.forEach((match) {
t.add(match.group(0));
});
我如何使其与这些汉字以及西方字符匹配?或者,如果我需要新的正则表达式,可以帮我重新做一次吗?谢谢您,对不起我不懂中文,英语不好。
答案 0 :(得分:1)
要匹配所有非ASCII字符,您可以使用RegExp(r'[^\x00-\x7F]')
答案 1 :(得分:0)
RegExp \B"[^"]*"\B
依靠\B
转义-一种“非单词边界”零宽度匹配项,仅当周围的字符之一是“ word字符”(ASCII {{ 1}}-a
,z
-A
,Z
-0
,9
或$
),另一个是不。由于_
不是,因此仅当您在单词字符后加上引号时才匹配,并且仅在下一个引号后有单词字符时才匹配。无论使用什么脚本,它都应该匹配两个引号之间的任何非引号字符。不过,非边界断言仅是ASCII,所以我猜这是引起您问题的原因。
仅凭这一点还不清楚您想要实现什么。 您能描述一下您想要匹配的字符串,以及一些您不想匹配的字符串的例子吗?