例如,我有字符串"域"," asset44.domain"," asset.domain"," domain1"
我需要与正则表达式匹配所有字符串,其中" domain"一句话,但有一些例外:我不需要匹配" asset44.domain"和" domain1"。
首先我做了if ($_ =~ /domain/io) {
它匹配所有字符串
我放if ($_ =~ /domain(?!1)/io) {
后
它匹配所有字符串,除了" domain1"
现在,我无法理解,除了" asset44.domain",但保持匹配" asset.domain"。
P.S。 asset44.domain可能还有另一个数字:例如asster56.domain。
P.P.S
解决方案: (?<!asset)(?<!\d\.)domain(?!1)
https://regex101.com/r/sF2qG3/1
答案 0 :(得分:2)
只是一些想法:
if ( $_ =~ /domain/ and (not $_ =~ /domain1/ or $_ =~ /asset44/) ){
# do whatever
}
更新:
[^asset[0-9]domain[^domain1]
以下是演示:regex101.com/r/rJ4vC6/1
答案 1 :(得分:0)
答案 2 :(得分:0)