从字符串中提取一个单词

Extract one word from String

我正在为 REGEX 苦苦挣扎,找不到解决方案。 我有以下字符串:

LSUS_GDIS_SHIP_0211e947-1587-11de-9967-99f27557554e.txt
LSUS_GDIS_REC_0211e947-1587-11de-9967-99f27557554e.txt
LSUS_GDIS_CAPACITY_0211e947-1587-11de-9967-99f27557554e.txt

我需要匹配除 SHIP、REC 或 CAPACITY 之外的每一行。

我想到了

(?!.*\bSHIP\b|\bREC\b|\bCAPACITY\b).*

如何排除 SHIP 或 REC 或 CAPACITY?当我这样做时

(SHIP|REC|CAPACITY)

我只匹配这些字符串,但我想排除它们。

每一行都可以用正则表达式分成三部分

([A-Z_]+)(SHIP|REC|CAPACITY)([_a-z\d-\.]+)

那么你可以使用替换为

replacement1++replacement2

使用正则表达式进行分组匹配:

^([\s\S]*?)(SHIP|REC|CAPACITY)([\s\S]*?)$.*

说明:对于结果check this link

  • ^ « 匹配字符串的开头而不消耗任何字符。如果使用多行模式,这也会在换行符之后立即匹配。
  • 第 1、3 个捕获组 ([\s\S]*?)
    • \s « 匹配任何 space、制表符或换行符。
    • \S « 匹配 space、制表符或换行符以外的任何内容。
    • [\s\S] « 匹配任意字符
    • *? 量词——匹配零次和无限次之间,尽可能少,按需扩展(懒)
  • 2nd Capturing Group (SHIP|REC|CAPACITY),将这些词匹配为第 2 组
  • $ 声明行尾的位置
    • .* 匹配任何字符(行终止符除外)