RegEx:如果存在空间,则选择空格

时间:2012-10-12 14:33:15

标签: c# regex

我有像

这样的价值观
\w{1,2}-\w{1,2}\d{1,4} and \w{1,2}-\w{1,2} \d{1,4}

我转换了这些值:

AB-CD 1 -> AB-CD1
AB-CD1 -> AB-CD1

我是用

做的
[ ]{1}[\d]{1} 

并将“”替换为“”。这很有效。

但现在我需要进行以下转换:

AB-CD1 -> AB-CD 1
AB-CD 1 -> AB-CD 1

我试着向前看任何数字

(?=\d) 

但是如果我的文本已经包含一个空格,那么我会得到两个空格。我需要选择\ w和\ d之间的空格(或者没有空格) - 我该怎么做?

3 个答案:

答案 0 :(得分:1)

你可以写:

(?<![\d ]) ?(?=\d)

匹配一个可选空格(即空格或空字符串)跟随数字或空格的位置, 位于数字前面。

(?<!...)负面的后置断言;请参阅http://www.regular-expressions.info/lookaround.html。)

答案 1 :(得分:0)

您可以将([^\d ])(?=\d)替换为“\ 1”

答案 2 :(得分:0)

不知道c#..但你可以尝试替换:

([a-zA-Z])([0-9]+)

\1 \2

用sed进行小测试:

kent$  echo "AB-CD1"|sed -r 's/([a-zA-Z])([0-9]+)/\1 \2/g'
AB-CD 1