请教一个 Sed 中正则表达式的问题

2014-07-07 14:19:04 +08:00
 leavic
在一个sed的正则匹配中,我要匹配两个"%"之间的全部数字,并作为组1,
以下写法可以:
\%\([^\%]*\)\%
#(所有非%的字符)

\%\([^\D]*\)\%
#(所有非-非数字的字符,蛋疼..)

\%\([0-9]*\)\%
#(所有数字字符,看起来好像精神病治好了)

\%\([[:digit:]]*\)\%
#([[:digit:]])还是GNU Sed标准呢,这么恶心)

可是!
可是为什么这样写就完蛋了?
\%\(\d*\)\%

\d不是表示数字的标准正则元字符吗?你Sed都支持对\D做反义了,难道不支持\d?还是我写法有问题?
2480 次点击
所在节点    问与答
2 条回复
Shieffan
2014-07-07 14:41:08 +08:00
你说对了,sed就是不支持\d
leavic
2014-07-07 14:56:43 +08:00

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/121349

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX