Regex 如何在dart中仅从字符串中删除符号

Regex 如何在dart中仅从字符串中删除符号,regex,dart,flutter,Regex,Dart,Flutter,我想从字符串中删除所有特殊符号,并且字符串中只有单词 我尝试过这个,但它只提供相同的输出 main() { String s = "Hello, world! i am 'foo'"; print(s.replaceAll(new RegExp('\W+'),'')); } 输出:你好,世界!我是“福” 预期:Hello world i am foo声明如果以这种方式构造正则表达式,则应使用原始字符串(以r为前缀的字符串文字,如r“Hello world”)。这在使用转义符的

我想从字符串中删除所有特殊符号,并且字符串中只有单词 我尝试过这个,但它只提供相同的输出

main() {
    String s = "Hello, world! i am 'foo'";
    print(s.replaceAll(new RegExp('\W+'),'')); 
}
输出:
你好,世界!我是“福”

预期:
Hello world i am foo
声明如果以这种方式构造正则表达式,则应使用原始字符串(以
r
为前缀的字符串文字,如
r“Hello world”
)。这在使用转义符的地方特别必要

此外,您的正则表达式也将捕获空格,因此需要对其进行修改。您可以改用
RegExp(r“[^\s\w]”
来匹配任何非空白字符或单词字符

有两个问题:

  • '\W'
    不是有效的转义序列,若要在常规字符串文字中定义反斜杠,需要使用
    \\
    ,或使用原始字符串文字(
    r'…')
  • \W
    正则表达式模式匹配任何非单词字符(包括空格)的字符,您需要将否定字符类与单词和空格类一起使用,
    [^\W\s]
使用


输出:
Hello world i am foo

我在寻找如何从字符串中删除符号时发现了这个问题。对于来到这里想要这样做的其他人:

final myString = 'abc=';
final withoutEquals = myString.replaceAll(RegExp('='), ''); // abc

谢谢,它工作了,但也删除了空格。你能告诉我如何不删除空格吗?工作了,我在end@RajeshJr. 您可以将其合并到1个正则表达式中:
.replaceAll(新的正则表达式(r'(?:|[^\w\s])+','')
在用数字字符串“32.151”中的“”替换“.”时,我得到了错误的结果@A.easazadeh,这是因为
点字符在正则表达式中的意思。因此,在您的示例中,每个字符都被匹配和替换。如果您只想匹配文本
点,则需要将其转义为
RegExp('\.')
RegExp(r'\.')
RegExp('[.]')
final myString = 'abc=';
final withoutEquals = myString.replaceAll(RegExp('='), ''); // abc