如何使用正则表达式匹配亚洲字符?

时间:2018-09-21 01:31:57

标签: regex string dart

我必须使用Dart从响应数据中提取短语字符串,并且使用此正则表达式做得很好:

\B"[^"]*"\B

它与短语匹配得很好,但不包括亚洲汉字字符(如日语,中文,韩语,俄语等)。

var regex = RegExp(r'\B"[^"]*"\B');
      Iterable<Match> matches = regex.allMatches(returnString);
      matches.forEach((match) {
        t.add(match.group(0));
      });

我如何使其与这些汉字以及西方字符匹配?或者,如果我需要新的正则表达式,可以帮我重新做一次吗?谢谢您,对不起我不懂中文,英语不好。

2 个答案:

答案 0 :(得分:1)

要匹配所有非ASCII字符,您可以使用RegExp(r'[^\x00-\x7F]')

答案 1 :(得分:0)

RegExp \B"[^"]*"\B依靠\B转义-一种“非单词边界”零宽度匹配项,仅当周围的字符之一是“ word字符”(ASCII {{ 1}}-az-AZ-09$),另一个是不。由于_不是,因此仅当您在单词字符后加上引号时才匹配,并且仅在下一个引号后有单词字符时才匹配。无论使用什么脚本,它都应该匹配两个引号之间的任何非引号字符。不过,非边界断言仅是ASCII,所以我猜这是引起您问题的原因。

仅凭这一点还不清楚您想要实现什么。 您能描述一下您想要匹配的字符串,以及一些您不想匹配的字符串的例子吗?