我正在尝试从可能的代码列表中过滤掉公司代码。
以下代码是我到目前为止所得到的,我需要使 RegExp 足够复杂,以便仅通过某些模式。有关更具体的详细信息,请参见下面的示例代码。
Pattern tickerPattern = Pattern.compile("^[A-Z:\\.0-9]+$");
String[] tickerStrArr={
"JELK90#$", // NOT A TICKER
"1", // NOT A TICKER
"0", // NOT A TICKER
"R", // NOT A TICKER
"25.36", // NOT A TICKER
"1.0", // NOT A TICKER
"GOOG", // Ticker
"NYSE:C", // Ticker (with exchange code NYSE)
"GOOG.BY", // Ticker (with exchange code BY)
"$90", // NOT A TICKER
"98774", // Ticker (because more than 4 digit long)
"789.BY" // Ticker (because ends with .[A-Z]{2,2})
};
for(String tickerStr: tickerStrArr)
{
Matcher matcher =tickerPattern.matcher(tickerStr);
if(matcher.find())
{
System.out.println("It's a ticker=>"+matcher.group());
}
}
预期产出
It's a ticker=>GOOG
It's a ticker=>NYSE:C
It's a ticker=>GOOG.BY
It's a ticker=>98774
It's a ticker=>789.BY
你能制定出所需的 RegExp 来获得上述预期的输出吗?
以下是我自己过滤的规则(不一定适用于所有人)
只有字符或数字可以是股票代码的一部分,没有特殊的字符或货币符号。
有时会提到代码及其交换代码作为前缀 例如 => NYSE:C 或者可能有两个字符交换代码作为后缀 例如 => C.BY
如果都是数字,那么它应该超过 4 位数字。(这是为了排除数百万个误报)
但是,如果数字与交换代码一起被提及,则股票代码可能少于 4 位。因为,那我们有很高的信心。
如果您需要更多详细信息,请告诉我。