我正在尝试测试摩尔斯电码是否合法。

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

莫尔斯电码行可以以.(称为Dit)和-(称为Dah)开头。行中可以有空格。
两个特定代码(例如.- -.)之间有1个空格,在这种情况下,仅由一个空格分隔的代码之和就是一个单词。但是它也可以有3个空格,然后开始一个新词。我正在使用trim来排除行首和行尾可能会有空白的事实。

这里有一个例子使其更加清晰。

我们使用“Hello World”进行解释。通过张贴将空白消除,因此看看http://www.rubular.com/r/r2iwqgUHCB也是我使用的正则表达式。在Java中它不起作用,如果有人可以解释为什么它不起作用甚至告诉我它如何起作用,我将非常感激。

最佳答案

您可以这样描述莫尔斯电码:

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

摩尔斯字母表中的每个元素都具有1或5个Dit或Dah。

每个字母之间用一个空格隔开

每个词用三个空格隔开

关于java - Java正则表达式匹配摩尔斯电码,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17197887/

10-10 13:31