我正在尝试测试摩尔斯电码是否合法。
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/