如何使用Python Regex匹配文本中的股票代码(stock tickers)符号
匹配股票代码的正则方案
你需要的正则表达式如下:
(?<=\$)[a-zA-Z]+|\b[A-Z]{3,6}\b
规则说明
- 第一部分
(?<=\$)[a-zA-Z]+:通过正向零宽后行断言匹配$符号后的所有字母组成的单词,不会将$本身纳入匹配结果,支持任意大小写,符合你对$后单词的提取要求 - 第二部分
\b[A-Z]{3,6}\b:匹配长度为3-6个字符的全大写独立单词,\b为词边界标识,避免匹配长单词中符合长度的片段
匹配效果验证
针对你提供的示例文本:
This is a $test to show what I would LIKE to match. If $YOU look below you will FIND the list of simulated tickers ($STOck symbols) I would like to match.
使用上述正则可精准命中预期的5个结果:test、LIKE、YOU、FIND、STOck。
兼容方案
如果你的运行环境不支持零宽后行断言(比如低版本JavaScript、部分旧版正则引擎),可以使用带捕获组的版本:
\$([a-zA-Z]+)|\b([A-Z]{3,6})\b
匹配后取第1捕获组或第2捕获组的非空值即可得到目标结果。
可选调整
如果你的场景中股票代码允许包含数字,可将第一部分的[a-zA-Z]+调整为[a-zA-Z0-9]+适配需求。
内容的提问来源于stack exchange,提问作者alphadmon
相关产品推荐
相关产品推荐

