什么是用“###”替换“###”的正则表达式。

时间:2012-07-07 14:19:01

标签: regex openoffice-writer

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

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

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

找到了我正在寻找的数字

替换为

$&

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

既没有工作

2 个答案:

答案 0 :(得分: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.

答案 1 :(得分:0)

这似乎适用于OpenOffice 3.3:

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

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

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