首页 > 解决方案 > 在这种情况下如何匹配正则表达式

问题描述

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

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”。

标签: regex

解决方案


要匹配所有第一个单词:

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

解释

  • ^字符串的开始
  • \w+匹配 1+ 个单词字符
  • (?=\s+-)积极的前瞻,断言右边是 1+ 空白字符和-

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

正则表达式演示


要删除后跟连字符的第一个单词之后的所有内容,您可以使用捕获组并在替换中使用它。

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

正则表达式演示


推荐阅读