通过正则表达式PHP

时间:2015-10-19 07:41:26

标签: php regex

日文邮政编码的结构类似于123-5678,我创建了一个模式“/ \ d {3} [ - ] \ d {4} \ b / g”我有一个段落像那样

Sample text for testing:
abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ 12555553-3456 000-1245 145-333333
0123456789 +-.,!@#$%^&*();\/|<>"'
12345 -98.7 3.141 .6180 9,000 +42
555.123.4567    +1-(800)-555-2468
foo@demo.net    bar.ba@test.co.uk
www.demo.com    http://foo.co.uk/
http://regexr.com/foo.html?q=bar

我在http://www.regexr.com/测试模式,我得到结果553-3456,000-1245和555-2468但我想找到任何字符串不包含1,2,...字母(s )前后连续:“3个数字字母和减号字符和4个数字字母”。我的意思是字符串“+ 1-(800)-555-2468”不是我想要的结果。可能是322-5588但不是xxx322-5588xxx。 xxx是一个或多个数字字符或字母字符。请查看http://www.regexr.com/和我的模式“ / \ d {3} [ - ] \ d {4} \ b / g ”以了解我的需求。
请帮助我,抱歉我的英语不好。

2 个答案:

答案 0 :(得分:0)

如果我理解正确,在示例中,您给出的唯一结果是“000-1245”。

如果是这种情况,请尝试以下正则表达式:import time with open('date.txt') as f: mylist = f.read().splitlines() for date_time in mylist: if "/" in date_time: pattern = '%m/%d/%Y' print "1", pattern else: print "2" pattern = '%m-%d-%y' epoch = int(time.mktime(time.strptime(date_time, pattern))) print epoch

答案 1 :(得分:0)

只需在表达式之前添加\ b:

 ^((?:[^,]+,){8})(.+)((?:,[^,]*){2})$ and replace with $1"$2"$3