-1

po box または gpo box のアドレスに一致する正規表現が必要です。基本的に文字列のルールは次のとおりです。

基本的に私はルールを次のようにしたい:

最初の文字は G または P でなければなりません。

最初の文字が G の場合、その後の文字は任意の文字の組み合わせで、その後に PO BOX が続きます。

それ以外の場合、最初の文字が P の場合、後続の文字は O BOX でなければなりません

例: 私書箱、GPO ボックス。G23123PO BOX、大丈夫です、

ただし: GO BOX、G2323O BOX は問題ありません\n

だから私は試しました

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

しかし、この場合GO BOXもマッチです。2番目のpはオプションでしかありませんが、必須にすることはできません。または、最初の文字もapであると条件が壊れます。

助けてください!

4

1 に答える 1

1

あなたの例はあなたの説明と一致しません。

これはどうですか?g.+冒頭のは任意のようですが、P以降は同じです。

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

この構文は、少なくとも or のような「拡張された」正規表現構文を前提としてsed -regrepますPerl

また、例では大文字を使用しているようですが、正規表現では小文字を使用しているようです。ちょっとトリッキーな正規表現エンジンは大文字と小文字を区別するので、

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

あるいは

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

(少なくとも Perl では)。

于 2013-10-28T13:56:58.843 に答える