我有这样的数据:
01Jun18 324567645
01Jun18 Addfd
01Jun18 112 Word
01Jun18 fjfs7dfsfj
01Jun18 kdkd
01Jun18 0sdfnefk
01Jun18 skfks7sfsff
01Jun18 sfrfsf8srfsr
我希望除第一行外的所有行都匹配。字符串可以包含数字,但不能仅包含数字-必须也存在字母。
到目前为止,我正在使用,但这与所有行匹配:
([\d]{2}[A-Za-z]{3}[\d]{2}) ([A-Za-z\d ]{1,})
关于如何或是否可以实现的任何想法?我已尝试使用+
将A-Z标记为必需
答案 0 :(得分:1)
^([\d]{2}[A-Za-z]{3}[\d]{2}) [0-9 ]*[a-zA-Z]+[0-9a-zA-Z ]*$
答案 1 :(得分:0)
您可以使用
preg_match_all('~^(\d{2}[A-Za-z]{3}\d{2})\h+(?!\d+$)([A-Za-z\d\h]+)$~m', $s, $matches)
如果您只想匹配行的其余部分而不关心可能存在的字符,则甚至可以将([A-Za-z\d\h]+)
替换为(.*)
。
请参见regex demo
详细信息
^
-行的开头(由于m
修饰符)(\d{2}[A-Za-z]{3}\d{2})
-第1组:两位数字,三个ASCII字母,两位数字\h+
-1个或多个水平空格(?!\d+$)
-如果行末尾只有数字,则负前行匹配失败。([A-Za-z\d\h]+)
-第2组:一个或多个字符,它们是字母,数字或水平空格.*
-尽可能匹配除换行符以外的任意0+个字符$
-行尾。