Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于dart中阿拉伯字符的Regexp dart_Regex_String_Dart_Unicode_Hashtag - Fatal编程技术网

用于dart中阿拉伯字符的Regexp dart

用于dart中阿拉伯字符的Regexp dart,regex,string,dart,unicode,hashtag,Regex,String,Dart,Unicode,Hashtag,你好吗 我是dart和Flatter的初学者,也是一名新程序员,这是我第一次问有关StackOverflow的问题 我现在正在接受正则表达式方面的培训,我正在尝试创建一个正则表达式,以匹配所有具有哈希标记符号的字符,如: #我在这里 #停止 无论如何,一切都很顺利,但实际上,当我试图用阿拉伯语替换英语字符串时,我卡住了 void main(){ 字符串文本=“#اسميهنا”; RegExp exp=new RegExp(r“\B\w\w+”,unicode:true,多行:true);

你好吗

我是dart和Flatter的初学者,也是一名新程序员,这是我第一次问有关StackOverflow的问题

我现在正在接受正则表达式方面的培训,我正在尝试创建一个正则表达式,以匹配所有具有哈希标记符号的字符,如:

  • #我在这里
  • #停止
无论如何,一切都很顺利,但实际上,当我试图用阿拉伯语替换英语字符串时,我卡住了


void main(){
字符串文本=“#اسميهنا”;
RegExp exp=new RegExp(r“\B\w\w+”,unicode:true,多行:true);
exp.allMatches(文本).forEach((匹配){
打印(匹配组(0));
if(匹配组(0)=null){
打印(空);
}
});
}

它甚至不打印空。

这个
\w
字符是
[A-Za-z0-9.
的缩写。在本例中,您使用的是阿拉伯语字母表,因此表达式将不匹配,因为
A-Z
属于拉丁字母表

一种解决方法是使用
\p{L}
,这基本上可以匹配任何字母,而不考虑语言。有关该主题的更多信息,您可以研究对unicode匹配感兴趣的正则表达式

编辑: 根据您的评论,表达式的这一部分的问题是:
#\p{L}+[[u]+\ p{L}+
,引擎需要一个哈希,字母(一个或多个),后跟下划线(一个或多个)和字母(一个或多个)


在您的另一个示例中,我们可以使用以下形式的字符串:
#foo
#foo\u bar
,我们需要对表达式进行扩展,以便
#u bar
部分是可选的。为此,我们将表达式修改如下:
\p{L}+([\u]+\ p{L}+)
。在这种情况下,引擎现在需要
#foo
#foo\u bar
。如果您需要匹配以下形式的任何内容:
\foo\u bar\u hello
,您也可以使用
\p{L}+([\u]+\ p{L}+
\w
字符是
[A-Za-z0-9}
的缩写。在本例中,您使用的是阿拉伯语字母表,因此表达式将不匹配,因为
A-Z
属于拉丁字母表

一种解决方法是使用
\p{L}
,这基本上可以匹配任何字母,而不考虑语言。有关该主题的更多信息,您可以研究对unicode匹配感兴趣的正则表达式

编辑: 根据您的评论,表达式的这一部分的问题是:
#\p{L}+[[u]+\ p{L}+
,引擎需要一个哈希,字母(一个或多个),后跟下划线(一个或多个)和字母(一个或多个)


在您的另一个示例中,我们可以使用以下形式的字符串:
#foo
#foo\u bar
,我们需要对表达式进行扩展,以便
#u bar
部分是可选的。为此,我们将表达式修改如下:
\p{L}+([\u]+\ p{L}+)
。在这种情况下,引擎现在需要
#foo
#foo\u bar
。如果您需要匹配以下形式的任何内容:
\foo\u bar\u hello
,也可以使用
\p{L}+([\u]+\ p{L}+)

在尝试实际执行我想要的操作后,我发现最好的解决方案是:

RegExp-exp=newregexp(r“([#][^\s#]*)”;
字符串字符串;
exp.allMatches(str).forEach((m){
印刷品(
m、 第(0)组,
);
});

在尝试实际执行我想要的操作后,我发现最好的解决方案是:

RegExp-exp=newregexp(r“([#][^\s#]*)”;
字符串字符串;
exp.allMatches(str).forEach((m){
印刷品(
m、 第(0)组,
);
});

当我使用一个像这样的字符串的时候,当我使用一个像这样的字符串的时候,当我使用一个像这样的字符串的时候,当我使用一个像这样的代码的时候,我使用的时候,我使用的时候,我使用的时候,当我使用一个像这样的代码的时候,当我使用一个像这样的字符串的时候,当我使用一个像这样的代码的时候,当我使用一个代码的时候,当我使用的时候,当我使用一个代码的时候,当我使用的时候,当我使用一个像这样的时候,当我使用一个像这样的时候,当我使用一个::::当我使用一个当我使用一个当我使用一个像这样k
\uu
\p{L}不匹配
。您可以将任何其他字符放在方括号中分隔正在解析的单词。我注意到,当我使用一个单词的hashtag时,它不起作用,例如:```这里``我该怎么办?@nipintiI使用的是
RegExp(r'\B'\p'{L}\p'{L}+,unicode:true,multiLine:true)
当我使用这样的字符串时:“#ا㶍مهن㶍㶍㶍㶍مي(仅第一个单词)有什么问题?您可以尝试一下
RegExp(r”\B#\p{L}++\p{L}+
@notworking?AFAIK
不匹配吗{
。您可以将任何其他字符放在方括号中分隔正在解析的单词。我注意到,当我使用一个单词的哈希标记时,它不起作用,例如:“``这里``我该怎么做?@nipinti”