-1

我需要一个匹配 po box 或 gpo box 地址的正则表达式,基本上字符串的规则是:

基本上我希望规则是:

第一个字符必须是 G 或 P,

如果第一个字符是 G,那么后面的字符必须是 PO BOX 后面的字符的任意组合

否则如果第一个字符是 P,那么后面的字符必须是 O BOX

例如:邮政信箱、邮政信箱。G23123PO BOX,一切正常,

但是:GO BOX、G2323O BOX 不行\n

所以我尝试了

^(([g|p](.) o(. )box)).*$

但在这种情况下,GO BOX 也是一个匹配项,因为第二个 p 只是可选的,但我不能使其成为必需,否则当第一个字母也是 ap 时它会破坏条件!

请帮忙!

4

1 回答 1

1

您的示例与您的描述不符。

那这个呢?好像g.+开头的那个是可选的,但是从P开始都是一样的。

^(g.+)?(p.+o.+box)$

该语法至少假定“扩展”正则表达式语法,如sed -roregrepPerl

您似乎也在示例中使用大写字母,但在正则表达式中使用小写字母。棘手的小正则表达式引擎区分大小写,所以你可能想要

^(G.+)?(P.+O.+BOX)$

甚至

/^(g.+)?(p.+o.+box)$/i

(至少在 Perl 中)。

于 2013-10-28T13:56:58.843 回答