繁体   English   中英

Perl正则表达式例外

[英]Perl regular expression with exception

例如,我有字符串“ domain”,“ asset44.domain”,“ asset.domain”,“ domain1”

我需要用正则表达式匹配所有字符串,其中“ domain”一词是这样,但有一些例外:我不需要匹配“ asset44.domain”和“ domain1”。

首先我做了if ($_ =~ /domain/io) {它匹配所有字符串

在我输入if ($_ =~ /domain(?!1)/io) {它匹配所有字符串,但“ domain1”除外

而现在,我不明白如何除“ asset44.domain”外,而保持匹配“ asset.domain”。

PS asset44.domain可能还有另一个数字:例如asster56.domain。

PPS解决方案: (?<!asset)(?<!\\d\\.)domain(?!1) https://regex101.com/r/sF2qG3/1

只是一些想法:

if ( $_ =~ /domain/ and (not $_ =~ /domain1/ or $_ =~ /asset44/) ){
   # do whatever
}

更新:

 [^asset[0-9]domain[^domain1]

这是一个演示: regex101.com/r/rJ4vC6/1

尝试一下:

^([a-zA-Z]+\.)?domain$

我们将一个可选子域与([a-zA-Z]+\\.)?匹配([a-zA-Z]+\\.)?
和字符串domain ,后面没有任何内容

在这里看到它

好的,我发现了如何做得更好,这是我的代码。

(?<!asset)(?<!\d\.)domain(?!1)

https://regex101.com/r/sF2qG3/1

谢谢大家。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM