我正在尝试编写一个解析 <stock ticker> - <company>
的正则表达式。问题在于输入有点不可预测,并且允许的代码格式很广泛。
股票代码内部有一个连字符是可以的,但如果连字符是股票代码的开始或结束,则不可以。并且不允许有超过一个股票代码。因此,“BRK-B - Berkshire”应解析为“BRK-B”,“ALL- Allstate”应解析为“ALL”。此外,连字符的相同规则也适用于句点。
空格应表示代码的结尾。
现在我正在使用正则表达式 [a-zA-Z.-]*
与其他检查以确保数据格式正确。这确实是尾随标点=坏(但如果内部=好的)规则让我绊倒。我不知道如何告诉它“ALL- Allstate”应该是“ALL”,但“BRK-B - Berkshire”应该是“BRK-B”。我想知道是否有一个单行正则表达式可以代替上述操作。
最佳答案
你可能想要这样的东西:
/[a-z](?:[a-z.-]*[a-z])?/i
这将强制第一个和最后一个字母为实际字母,并且只允许在单词本身内包含 .
和 -
。
关于python - 正则表达式:处理不可预测的输入:不允许使用尾随(但其他方面都可以)字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18303401/