用于dart中阿拉伯字符的Regexp dart
你好吗 我是dart和Flatter的初学者,也是一名新程序员,这是我第一次问有关StackOverflow的问题 我现在正在接受正则表达式方面的培训,我正在尝试创建一个正则表达式,以匹配所有具有哈希标记符号的字符,如:用于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);
#我在这里
#停止
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”