0

其中### 是一个三位或四位数字,后跟一个空格,我想用相同的数字替换它,后跟一个空格和一个句点。

我在 Open Office 中使用正则表达式搜索和替换,我试过了

"[0-9][0-9][0-9] "

找到了我正在寻找的数字

用。。。来代替

$&

或者

"[0-9][0-9][0-9]. "

都没有工作

4

2 回答 2

1

在大多数正则表达式实现中,“(\D\d{3,4})”选择带有非数字前缀的 3 或 4 位数字(否则它将在 12345 中找到 2345)。这样在 ">1234 <" 中会找到 ">1234 ",并将其放入 $1 或 \1 中。所以:

  s/(\D\d{3,4}) /\1. /g

否则,您可以使用单词边界而不是 \D,\< 或 \b 或 < 取决于方言。

编辑:如果不支持 \d,如(显然)我的命令行 sed,即使我可以发誓相反,使用 [0-9] 替换 \d:

 sed -e 's/\([^0-9][0-9]\{3,4\}\) /\1. /g'

测试:

 $ echo "This is 12345 and 1234 and 123 and 12 and 1. 123. 1234." \
   | sed -e 's/\([^0-9][0-9]\{3,4\}\) /\1. /g'

结果:

 This is 12345 and 1234. and 123. and 12 and 1. 123. 1234.
于 2012-07-07T14:26:04.863 回答
0

这似乎适用于 OpenOffice 3.3:

搜索:(([^0-9][0-9]{3,4})带尾随空格)

替换:($1.带有尾随空格)

不幸的是,它与文本开头的 3 位或 4 位数字不匹配。

于 2012-07-07T19:16:54.013 回答