Chinaunix
标题:
匹配固定格式的数字
[打印本页]
作者:
sunzhiguolu
时间:
2016-03-14 16:23
标题:
匹配固定格式的数字
有一些具有固定格式的数字, 如下:
031-723-2328
12345678
(234)-001-8932
123-345-1234
5761234
(234-777-1234
复制代码
条件:
1.> 长度为7的数字
2.> 由 3,3,4 长度组成, 并由 - 字符进行分割的
3.> 第一组数字由一对小括号包围起来的, 但是必须成对出现
要求的结果是:
031-723-2328
(234)-001-8932
123-345-1234
5761234
请问该如何匹配, 谢谢...
作者:
jason680
时间:
2016-03-14 17:20
回复
1#
sunzhiguolu
你都写完了,写出正则也没有问题才对
作者:
sunzhiguolu
时间:
2016-03-14 17:28
回复
2#
jason680
我写的是期望的结果啊,,,
作者:
sunzhiguolu
时间:
2016-03-14 17:35
@jason680
之所以写的这么全, 下面有真相, 请看:
火狐截图_2016-03-14T09-34-18.406Z.png
(50.04 KB, 下载次数: 41)
下载附件
2016-03-14 17:35 上传
作者:
sunzhiguolu
时间:
2016-03-14 17:59
回复
2#
jason680
以上的问题中其实就差 => 处理过程
我想利用条件表达式进行处理, 但是就是写不出来. 不知道大神能否指点一下.
作者:
jason680
时间:
2016-03-14 21:29
回复
5#
sunzhiguolu
你不自已写出正则,如何能提高?
条件:
1.>
长度为7
的
数字
\d
{7}
2.> 由
3,3,4
长度组成, 并由
-
字符进行分割的
3.>
第一组数字
由
一对小括号
包围起来的, 但是必须成对出现
作者:
sunzhiguolu
时间:
2016-03-14 22:34
本帖最后由 sunzhiguolu 于 2016-03-14 22:50 编辑
回复
6#
jason680
使用条件表达式的方式, 如何弄啊, 您能展示个小例子吗?
^(?:(?:\(\d{3}\)|\d{3})-)?\d{3}-?\d{4}$
复制代码
作者:
jason680
时间:
2016-03-14 23:18
本帖最后由 jason680 于 2016-03-14 23:25 编辑
回复
7#
sunzhiguolu
条件:
1.> 长度为7的数字
\d{7}
2.> 由 3,3,4 长度组成, 并由 - 字符进行分割的
\d{3}-\d{3}-\d{4}
3.> 第一组数字由一对小括号包围起来的, 但是必须成对出现
[(]
\d{3}
[)]
-\d{3}-\d{4}
\(\d{3}\)-\d{3}-\d{4}
就这样,你要的结果...
其他自已想(这问题不再回帖),多看书---骆驼书
Here you are
$ perl -lane '{
print if(
m/^(
\d{7} # xxxxxxx (7 digits)
| \d{3}-\d{3}-\d{4} # xxx-xxx-xxxx
| [(]\d{3}[)]-\d{3}-\d{4} # (xxx)-xxx-xxxx
)$ /x
)
}' FILE
031-723-2328
(234)-001-8932
123-345-1234
5761234
作者:
sunzhiguolu
时间:
2016-03-14 23:40
@jason680
我写的那个问题还是很多, 多谢大神指点. 谢谢!
作者:
小perl
时间:
2016-03-14 23:58
自己多写多测试就会了、、
作者:
RE_HASH
时间:
2016-03-15 00:26
按你的思路:
/^((\(\d{3}\)-)|(\d{3}-?))?\d{3}-?\d{4}$/
作者:
sunzhiguolu
时间:
2016-03-15 00:26
@小perl
大神 您说的在理! 向大神们学习, 天天向上!
作者:
sunzhiguolu
时间:
2016-03-15 00:29
本帖最后由 sunzhiguolu 于 2016-03-15 00:29 编辑
回复
11#
RE_HASH
大神好像, 不行. 会命中 => 123-4567
作者:
RE_HASH
时间:
2016-03-15 00:34
以为你在找电话号码,123-4567 不是好的?
作者:
sunzhiguolu
时间:
2016-03-15 00:43
回复
14#
RE_HASH
我的这些数字的确是按照北美的电话号码格式弄的, 只不过我规则我给改了下. 真是难逃大神法眼啊!
我想问下, 如何利用条件表达式进行匹配. 您能指点下吗?
作者:
RE_HASH
时间:
2016-03-15 00:48
条件表达式 是啥意思?
作者:
sunzhiguolu
时间:
2016-03-15 00:55
本帖最后由 sunzhiguolu 于 2016-03-15 00:59 编辑
回复
16#
RE_HASH
大神, 我只知道简单的语法格式, 应该是个挺不错的东西. (个人感觉不一定对, 让正则表达式好像 if else 的感觉)
(?(1)true-pattern|false-pattern)
搞不懂它里面的整数值到底起个啥作用?
作者:
RE_HASH
时间:
2016-03-15 01:09
我试了试,加了条件以后变复杂了好多。不觉得是个好习惯。别人看你的代码要猜半天。
那些?(1)?(2)是依赖顺序的,你想改的时候也不方便。虽然可以给个名字,那REGEX就更长了。
我这么多年用perl都没用过,看来不学也罢。
作者:
sunzhiguolu
时间:
2016-03-15 01:15
回复
18#
RE_HASH
懂您的意思了, 谢谢大神帮忙.
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2