我有Regex
/^(?!(.*(Ink|Cartridge).*))(?:.*(\b - Black$\b))/
以下是我的样本
no match string
Simple match string - Black
Unmatched line with lowercase - black
Unmatched line with the word Ink within - Black
Unmatched line with the word Cartridge within - Black
Unmatched line with the string' - Black' before the end
我的正则表达式匹配整行2,但我试图匹配单词 ' - 黑'在字符串的末尾而不是整个字符串。
正则表达式语法应该基于JavaScript正则表达式。
任何想法?
答案 0 :(得分:0)
如果您只需匹配“-Black”这个词,那么正确的正则表达式将是:
/- Black/
上面的正则表达式只是匹配问题所要求的- Black
。
然而,确实你有比“匹配- Black
”更多的需求,而不是你想要的
字符串
- Black
的所有匹配项仅在其基础句子不包含Ink
或Cartridge
时,且仅当- Black
位于句子末尾且不- black
(小写)
现在,如果你只是想要我暴露的内容,那么将所有句子与所需的- Black
字符串同时匹配并不是一个问题。事实上,这就是capturing
在正则表达式世界中的含义。您放入正则表达式中的括号(
和)
实际上“抓取/获取/捕获”它中的内容并将其存储在变量中供以后使用。
这意味着:
/hello (world)/
将匹配hello world
但仅限world
。此捕获进入名为group
的变量,此处我只有一个组,因此world
将存储在组号1
中。
为了将此组用于其他目的(存储/删除/替换),您需要写一个美元符号$
,后跟所需组的编号(此处为1
)。对于此示例,$1
应输出world
。所以这就是你如何在捕获另一个东西时匹配的东西。
因此,回到你的榜样。我建议你这样做:
/^(?!(?:.*(?:Ink|Cartridge).*))(?:.*(?: (- Black)$))/gm
请看这个regex101,打开示例下方的substitution
标签,然后尝试撰写$1
:你有它,
只是
- Black
。
然后由你$1
做点什么。