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