在这种情况下如何匹配正则表达式

时间:2020-08-07 00:21:31

标签: regex

我正在尝试将正则表达式与以下短语匹配:

RENT3 - LOCALIZA
HGRE11 - FII HG REAL
HGLG11 - FII CSHG LOG
HGBS11 - FII CSHGSHOP
KNRI11 - FII KINEA
NTCO3 - GRUPO NATURAON      NM
ITUB3 - ITAUUNIBANCO
ITSA4 - ITAUSA
ITSA4 - ITAUSA

我尝试使用\s-\s(\w+)\w*$,目前您可以在此示例中查看一些行:

https://regex101.com/r/I4JkVP/2

如何获取所有行?

我对这个正则表达式的反对是删除第一个单词之后的所有单词,例如:

RENT3 - LOCALIZA

之后仅保留一个单词:“ RENT3”。

4 个答案:

答案 0 :(得分:0)

相反,只需将第一个单词分组即可:

(?<identifier>\w+).*

然后对于每个线路匹配都匹配,如果匹配,则:

String identifier = matcher.group(“identifier”)

更容易阅读。

答案 1 :(得分:0)

尝试这种模式(?=\s-\s).*

Demo

答案 2 :(得分:0)

匹配所有首字母:

^\w+(?=\s+-)

说明

  • ^字符串的开头
  • \w+匹配1个以上的字符字符
  • (?=\s+-)正向前进,断言右边是1+个空格字符和-

对于示例数据,您也可以省略^

Regex demo


要删除第一个单词后跟连字符的所有内容,可以使用捕获组并将其用于替换。

^(\w+)\s*-.*

Regex demo

答案 3 :(得分:0)

我用替换了最后一个 \ w 可以正常工作。

相关问题