首页 > 解决方案 > Flex 正则表达式用于包含空格的文本,例如“-.-.--.- -.-.--.-”

问题描述

我习惯了 PCRE,但我使用的是 Flex,它对正则表达式和引用有一些有限的功能。我似乎无法找到将所有莫尔斯电码作为单个令牌获取的方法。我认为它类似于带引号的字符串。最后一个字符是 [-.],开始是 [-.]。但整个莫尔斯电码也可能只是一个字节,如“。”。我可以要求它以“莫尔斯电码”作为开始。但我无法让它发挥作用。

我的例子:这是莫尔斯电码-.-。--.- 对于 CQ。

我想将完整的莫尔斯电码字提取为一个标记“-.-.--.-”或“莫尔斯电码-.-.--.-”,可以由破折号'-'、点'组成。和一个空间。我可以将其传递给解码器。我可以轻松地在开头提取固定文本,但我不能保证行尾是什么。

我见过这个正则表达式

[.-]{1,5}(?:[ \t]+[.-]{1,5})*(?:[ \t]+[.-]{1,5}(?:[ \t]+[.-]{1,5})*)*

但它使用 Flex 不支持的 (?: 表示法。

有什么建议么?

标签: regexflexbox

解决方案


推荐阅读