-5

これの正規表現を取得するにはどうすればよいですかString:

$OK:COMMAND=4,45,,internet,,,60.210.45.68,1050,30,168.95.1.1

私はこれを試しましたが、うまくいかないようです:

public static final String commandMotif = "^\\$OK:COMMAND=(\\w){0,1},(\\w){0,1},(\\w){0,1},(\\w){0,1},(\\w){0,1},(\\w){0,1},(\\w){0,1},(\\w){0,1},(\\w){0,1},(\\w){0,1}";

NB : 2 つのコンマの間にデータを入れることができますが、空になることもあります。

4

1 に答える 1

2

数量詞 は必要ありません。{0,1}必要*です。*前の要素を 0回以上繰り返しています。

\w文字と数字、およびアンダースコアが含まれます。あなたの例の文字列には「60.210.45.68」があり、ドットは\w. これは、独自の文字クラスを作成することで追加できます。

public static final String commandMotif = "^\\$OK:COMMAND=([\\w.]*),([\\w.]*),([\\w.]*),([\\w.]*),([\\w.]*),([\\w.]*),([\\w.]*),([\\w.]*),([\\w.]*),([\\w.]*)";

[\\w.]単語文字またはドットに一致する文字クラスです。

また、量指定子をキャプチャ グループ内に移動したので、カンマ間の一致するすべての部分がキャプチャ グループで見つかります。

コンマ間の部分をキャプチャする必要がない場合は、正規表現をかなり短縮できます。

^\$OK:COMMAND=[\w.]*(?:,[\w.]*){9}

こちらのRegexrでご覧ください

于 2013-09-30T10:37:31.420 に答える