C# 正则表达式.筛选字母和非字母数字字符

C# 正则表达式.筛选字母和非字母数字字符,c#,regex,C#,Regex,我需要从字符串中过滤字母和非字母数字字符,使其成为整数 正则表达式字符串之间有什么区别 \w 及 ?\w匹配任何字母数字字符(单词字符),包括下划线(缩写为[a-zA-Z0-9]) 相当于[A-Za-z0-9] 例如,/\w/匹配“apple”中的“a”,“5.28美元”中的“5”,以及“3D”中的“3” * 将上一项重复零次或多次。贪婪,因此在尝试与前一项的匹配较少的置换之前,将尽可能多的项匹配,直到前一项完全不匹配。代码与单个字母数字字符匹配,如set[0-9A-Za-z] *量词与{0,

我需要从字符串中过滤字母和非字母数字字符,使其成为整数

正则表达式字符串之间有什么区别

\w


\w
匹配任何字母数字字符(单词字符),包括下划线(缩写为[a-zA-Z0-9])

相当于[A-Za-z0-9]

例如,/\w/匹配“apple”中的“a”,“5.28美元”中的“5”,以及“3D”中的“3”

*


将上一项重复零次或多次。贪婪,因此在尝试与前一项的匹配较少的置换之前,将尽可能多的项匹配,直到前一项完全不匹配。

代码与单个字母数字字符匹配,如set
[0-9A-Za-z]

*
量词与
{0,}
量词相同,它将匹配重复零次或多次

在量词后面加问号会使它变懒,也就是说,它匹配尽可能少的字符,而不是尽可能多的字符

因此,
\w*?
惰性地匹配零个或多个字母数字字符

如果您想过滤掉不能在数字中的字符,为什么不使用负数集呢?这将匹配任何不是减号或数字的字符:

[^\-\d]

我认为OP使用的“?”是一个问号,而不是正则表达式的一部分。请看我的编辑。@phoenix:问题似乎是关于规则的贪婪的
*
,它后面的“?”表示句子标点符号。既然你的定义是贪婪之星,我就把你答案中的“懒惰之星”改成了“贪婪之星”。希望你不介意。
[^\-\d]