gpt4 book ai didi

regex - 使用 JAVA 检测公司代码的正则表达式

转载 作者:行者123 更新时间:2023-12-04 02:10:24 24 4
gpt4 key购买 nike

我正在尝试从可能的代码列表中过滤掉公司代码。

以下代码是我目前得到的,我需要使 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 以获得上述预期输出?

这里是我自己筛选的规则(不一定适用于所有人)

  1. 只有字符或数字可以作为行情的一部分,不能有特殊的字符或货币符号。

  2. 有时会提到代号及其交易所代码作为前缀例如 => 纽约证券交易所代码:C或者可以有双字符交换代码作为后缀例如 => C.BY

  3. 如果全是数字那么应该是4位以上。 (这是为了排除数百万的误报)

  4. 但是,如果数字与交易所代码一起提及,则代码可能少于 4 位。因为,那时我们有很高的信心。

如果您需要更多详细信息,请告诉我。

最佳答案

以下正则表达式将匹配以下内容。

  • 字符串的开始
  • PreXChangeCode:可选择匹配 a-z,2 到 4 次,除非后面某处有 .。这是为了检测具有多个交换符号的无效符号
  • 股票:a-z 1 到 4 次或数字 1-3 次后跟句点或数字 4 次或更多次
  • PostXChangeCode:可选择匹配 后跟 a-z 正好 2 次。
  • 字符串结束

正则表达式

 ^
(?<PreXChangeCode>[a-z]{2,4}:(?![a-z\d]+\.))?
(?<Stock>[a-z]{1,4}|\d{1,3}(?=\.)|\d{4,})
(?<PostXChangeCode>\.[a-z]{2})?
$

REY

我用 REY 测试了它它与您的测试数据正确匹配,但 R 除外。我包含了一个字符的股票名称,因为它们是有效的(R 是 Ryder Systems)。

关于regex - 使用 JAVA 检测公司代码的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18647885/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com