我对Regex很缺乏经验,即使我想自己解决这个问题,我也不确定如何开始。
我想开发一个Ruby扫描Regex,它接受一个字符串并返回一个字符串数组。正则表达式应该识别股票市场的股票代码,如果它们跟随股票代码,还包括短时间戳(包括-1d,-1m,-1y)。
举个例子:
How is AMZN-1d today and what about MSFT?
会回来......
["AMZN-1d", "MSFT"]
此外,如果这可以扩展到以下正则表达式,它获取股票代码,但不是时间戳 - 这将是辉煌的!
scan(/[\b\$]?[A-Z]{1,}\.[A-Z]+\b|[\b\$]?[A-Z]{2,}\b|\$[A-Z]{1,}\b|\b[A-Z]{1,}\$/)
答案 0 :(得分:0)
您的规格不完整。因此无法给出完全有效的答案。
你可以尝试使用这样的东西。
/([A-Z]{2,}-\d[dmy])|([A-Z]{2,})/g
我假设股票代码符号的最小长度为两个字符。
答案 1 :(得分:0)
您可以使用
/\b\p{Lu}{2,}(?:-\d\p{L}+\b)?/
请参阅regex demo
模式匹配:
\b
- 字边界\p{Lu}{2,}
- 2个或更多大写字母(?:-\d\p{L}+\b)?
- 1个或0个序列(由于?
量词)
-
- 连字符\d
- 一个数字(添加+
量词以匹配1位或更多位数,如果超过1位数)\p{L}+
- 一个或多个字母如果您只需要匹配ASCII字符,请将\d
替换为[0-9]
,将\p{L}
替换为[a-zA-Z]
,将\p{Lu}
替换为[A-Z]
。< / p>