1

我正在尝试编写一个解析<stock ticker> - <company>. 问题是输入有点不可预测,并且允许的代码格式很广泛。

代码内部的一个连字符是可以的,但如果连字符开始或结束代码就不行了。并且不允许超过一个代码。所以“BRK-B - Berkshire”应该解析为“BRK-B”,“ALL-Allstate”应该解析为“ALL”。此外,连字符的相同规则适用于句点。

空格应表示代码的结束。

现在我将正则表达式[a-zA-Z.-]*与其他检查一起使用,以确保数据格式正确。真正让我绊倒的是尾标=坏(但如果内部=确定)规则。我不知道如何告诉它“ALL-Allstate”应该是“ALL”,但“BRK-B - Berkshire”应该是“BRK-B”。我想知道是否有一个单行正则表达式可以代替上述内容。

4

1 回答 1

3

你可能想要这样的东西:

/[a-z](?:[a-z.-]*[a-z])?/i

这将强制第一个和最后一个字母是实际字母,并且只允许.-在单词本身内部。

于 2013-08-18T20:39:13.733 回答