读书人

Shell正则表达式怎么保证括号成对出现

发布时间: 2013-02-06 14:02:20 作者: rapoo

Shell正则表达式如何保证括号成对出现?
我遇到这样一个问题:要匹配7个数组,前3个数字可以用括号括起来,也可以不用。
比如:
1234567 可以
(123)4567 可以
但是括号不成对就不行。比如:
(1234567 和 123)4567 就不可以。

我写了这样一个正则表达式: /^\(?[0-9]{3}\)?[0-9]{4}/
这个表达式没办法保证括号是成对的。该如何解决这个问题呢?怎么写才能将两个括号关联起来,让它们成对出现呢?
正则表达式 shell 括号成对出现
[解决办法]
只两种情况,使用或 '
[解决办法]
' 表达式.. 这里用的egrep与grep -E等价

egrep '(^\([0-9]{3}\)[0-9]{4})
[解决办法]
(^[0-9]{7})'

例子:
echo '(123)4567' 
[解决办法]
egrep '(^\([0-9]{3}\)[0-9]{4})
[解决办法]
(^[0-9]{7})'

echo '1234567' 
[解决办法]
egrep '(^\([0-9]{3}\)[0-9]{4})
[解决办法]
(^[0-9]{7})'

echo '(1234567' 
[解决办法]
egrep '(^\([0-9]{3}\)[0-9]{4})
[解决办法]
(^[0-9]{7})'

echo '123)4567' 
[解决办法]
egrep '(^\([0-9]{3}\)[0-9]{4})
[解决办法]
(^[0-9]{7})'

读书人网 >UNIXLINUX

热点推荐