这是一个创建于 3794 天前的主题,其中的信息可能已经有所发展或是发生改变。
在一个sed的正则匹配中,我要匹配两个"%"之间的全部数字,并作为组1,
以下写法可以:
\%\([^\%]*\)\%
#(所有非%的字符)
\%\([^\D]*\)\%
#(所有非-非数字的字符,蛋疼..)
\%\([0-9]*\)\%
#(所有数字字符,看起来好像精神病治好了)
\%\([[:digit:]]*\)\%
#([[:digit:]])还是GNU Sed标准呢,这么恶心)
可是!
可是为什么这样写就完蛋了?
\%\(\d*\)\%
\d不是表示数字的标准正则元字符吗?你Sed都支持对\D做反义了,难道不支持\d?还是我写法有问题?
2 条回复 • 2014-07-07 14:56:43 +08:00
|
|
1
Shieffan 2014-07-07 14:41:08 +08:00 1
你说对了,sed就是不支持\d
|
|
|
2
leavic 2014-07-07 14:56:43 +08:00
|