python - 正则表达式:处理不可预测的输入:不允许使用尾随(但其他方面都可以)字符

标签 python regex

我正在尝试编写一个解析 <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/

相关文章:

java - 两个相同或不同分隔符之间的子字符串(当分隔符多次出现时)

python - Pandas 对具有固定行数的数据帧进行重新采样

python - 理解 - 从字典字段中列出

python - 使用 BeautifulSoup 进行多处理来改进 Wikipedia 抓取

python - 从文本 + python 正则表达式中提取行

Java删除所有感叹号

python - 如何避免在 Postgresql 的 INSERT 期间显式转换 NULL

python - 使用数据透视 reshape pandas 数据框并提供多列作为索引

python - 使用 Python re 转换注释//with/*

php - 将 NOT REGEXP 与 REGEXP 一起使用会弄乱我的结果