我一直在尝试构建正则表达式,但一直未能获得一个特定的条件。使用空格替换非alpha字符的正则表达式
我想要一个正则表达式来删除除破折号之外的所有非alpha字符(-
)。只有在前缀为空格的情况下才应更换虚线。
I.e.
TEST-TEST -TEST#TEST.TEST
应改为
TEST-TEST TEST TEST TEST
我一直在使用[^a-zA-Z0-9]
,但一直没能包括一个或条件初始化。
我一直在尝试构建正则表达式,但一直未能获得一个特定的条件。使用空格替换非alpha字符的正则表达式
我想要一个正则表达式来删除除破折号之外的所有非alpha字符(-
)。只有在前缀为空格的情况下才应更换虚线。
I.e.
TEST-TEST -TEST#TEST.TEST
应改为
TEST-TEST TEST TEST TEST
我一直在使用[^a-zA-Z0-9]
,但一直没能包括一个或条件初始化。
这里是我想出了(\s-|[^A-Za-z0-9-])
...这将删除所有非字母数字,但保持“ - ”除非有收到了空间“ - ”
测试使用的sed在Linux中,在那一刻我没有访问VS或单来测试C#
echo "TEST-TEST -TEST#TEST.TEST -1234" | sed 's/\(\s-\|[^A-Za-z0-9-]\)/ /g'
输出
TEST-TEST TEST TEST TEST 1234
\s-
[^A-Za-z0-9-]
所有你需要的是浏览器http://ideone.com/wYU5D – 2010-11-18 23:05:11
'var regex = new Regex(@“(\ s- | [^ A-Za-z0-9-]));字符串结果= regex.Replace(“TEST-TEST -TEST#TEST.TEST”,“”);' – 2010-11-18 23:06:45
完美的工作。谢谢。 – 2010-11-19 00:35:07
// Skip over '-', grab non-word characters or the ' -' sequence to replace
string pattern = @"(?!-)(\W| -)+";
string replacement = "";
Regex regex = new Regex(pattern);
string result = regex .Replace("Replace - this *@#&@#* string-already", replacement);
的(? - !)是一个零宽度式断言这将跳过“ - ”符号......如果它前面有一个空格,第二组将与之匹敌。
如果你想替换一个空间,而不是完全删除字符,只是改变
string replacement = " ";
的模式是贪婪的,所以它会取代非单词字符组用一个空格。
根据你例子,它看起来像你想保留空间以及? – 2010-11-18 22:24:17
或用空格替换非alpha字符? – 2010-11-18 22:37:32