0

我不知道这是否正确表达,但这是示例:

我有几百行这样的:

word1.word2.word3.1.09
word1.word2.2.14
word1.word2.word3.word4.3.22
word1.1.09

我想将它们转换为:

word1 word2 word3 1.09
word1 word2 2.14
word1 word2 word3 word4 3.22
word1 1.09

到目前为止,我达到了与这些匹配的点:

(([a-z0-9]+).+)([0-9]+.[0-9]+)

通常我会将 $1 $2 $3 隔开,但在这种情况下,$1 与第一个字母数字文本匹配多次。我可以只使用正则表达式来做到这一点,还是我必须在之后用另一种语言处理 $1?

4

1 回答 1

1

对于您提供的(可能是发明的)示例输入,这将起作用:

\.(?!\d{2}$)  # search string

" "           # replace string: a single space

即,这会查找您要删除的句点,并用空格替换它们。

解释:

\.     # look for a period, but ignore it if the negative lookahead matches:
(?!    # open negative lookahead
\d{2}$ # look for exactly two digits, at the end of the string
)      # close lookahead
于 2012-04-24T17:56:50.243 回答