其中### 是一个三位或四位数字,后跟一个空格,我想用相同的数字替换它,后跟一个空格和一个句点。
我在 Open Office 中使用正则表达式搜索和替换,我试过了
"[0-9][0-9][0-9] "
找到了我正在寻找的数字
用。。。来代替
$&
或者
"[0-9][0-9][0-9]. "
都没有工作
其中### 是一个三位或四位数字,后跟一个空格,我想用相同的数字替换它,后跟一个空格和一个句点。
我在 Open Office 中使用正则表达式搜索和替换,我试过了
"[0-9][0-9][0-9] "
找到了我正在寻找的数字
用。。。来代替
$&
或者
"[0-9][0-9][0-9]. "
都没有工作
在大多数正则表达式实现中,“(\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.
这似乎适用于 OpenOffice 3.3:
搜索:(([^0-9][0-9]{3,4})
带尾随空格)
替换:($1.
带有尾随空格)
不幸的是,它与文本开头的 3 位或 4 位数字不匹配。