1

我得到了像

\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 之间的空格(或没有) - 我该怎么做?

4

3 回答 3

1

你可以写:

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

匹配不跟在数字或空格之后并且在数字之前的可选空格(即空格或空字符串)位置。

(?<!...)是一个否定的后向断言;参见http://www.regular-expressions.info/lookaround.html。)

于 2012-10-12T14:48:33.723 回答
0

您可以替换([^\d ])(?=\d)"\1"

于 2012-10-12T14:48:23.107 回答
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
于 2012-10-12T14:48:46.047 回答