3

モールス符号が合法かどうかをテストしようとしています。

public static boolean isMorseCode( String code ){
return code.trim().matches("[+.|+\s|+-]");      
}

モールス符号の行は、.(Dit として知られている) と-(Dah として知られている) で始めることができます。行にスペースを含めることができます。この場合のように、2 つの特定のコード間の 1.- -.つのスペースは、1 つの空白だけで区切られたコードの合計が単語です。ただし、空白が 3 つある場合もあり、新しい単語が始まります。行頭と行末に空白がある可能性があるという事実を除外するためにトリムを使用しています。

より明確にするための例を次に示します。

説明には「Hello World」を使用します。空白は投稿することで消去されるので、http://www.rubular.com/r/r2iwqgUHCBを見てください。私が使用した正規表現もあります。Java では動作しません。誰かが動作しない理由を説明したり、どのように動作するかを示したりできれば、非常に感謝しています。

4

3 に答える 3

2

モールス符号は次のように記述できます。

[.-]{1,5}(?> [.-]{1,5})*(?>   [.-]{1,5}(?> [.-]{1,5})*)*

モールス文字の各要素には、1 つまたは 5 つのディットまたはダーがあります。

各文字は 1 つのスペースで区切られます

各単語は 3 つのスペースで区切られています

于 2013-06-19T17:57:01.490 に答える
1

[+.|+\s|+-]は文字クラスであるため、単一の文字に一致している可能性があります。多分あなたが欲しいのは[.\s\-]+.

于 2013-06-19T17:53:56.703 に答える