首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

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

2013-02-06 
Shell正则表达式如何保证括号成对出现?我遇到这样一个问题:要匹配7个数组,前3个数字可以用括号括起来,也可

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})'

热点排行