Perl不包含某個字串的正則匹配

2021-08-27 01:46:51 字數 1711 閱讀 3138

一、幾個問題

1.找出不包含"abc"的字串

測試用例1==>abc(不符合)

測試用例2==>xabc(不符合)

測試用例3==>abcy(不符合)

測試用例4==>xabcy(不符合)

測試用例5==>***x xabcy(不符合)

測試用例6==>*** abcy dabc(不符合)

測試用例7==>abcy(不符合)

測試用例8==>xyz(符合)

2.截出指定位置(第2列)字串,該字串不包含"abc"

測試用例1==>111 abc 222(不符合)

測試用例2==>111 xabc 222(不符合)

測試用例3==>111 abcy 222(不符合)

測試用例4==>111 xabcy 222(不符合)

測試用例5==>111 xyz 222(符合)

二、零寬斷言

上述問題都可以採用零寬斷言來解決,先了解零寬斷言:

1.(?=exp):這個零寬斷言用來斷言自身出現的位置之後能夠匹配到表示式exp,考慮下面這乙個正規表示式q(?=u),這個正規表示式表示匹配後面的字元是u的q

2.(?!exp):這個零寬斷言用來斷言自身出現的位置之後不能夠匹配到表示式exp,看下面這乙個正規表示式q(?!u),這個正規表示式表示匹配後面的字元不是u的q

3.(?字串

第一步:^(.)+$(字串構成)

第二步:^((?!abc).)+$(每個字元前的游標位置往後字串都不能是abc) use strict; my @lines = ('abc','xabc','abcy','xabcy','***x xabcy','*** abcy dabc','abcy','xyz'); my $pattern = '^((?!abc).)+$'; foreach my $line (@lines) else } 結果: abc:mismatched

xabc:mismatched

abcy:mismatched

xabcy:mismatched

***x xabcy:mismatched

*** abcy dabc:mismatched

abcy:mismatched

xyz:matched,z 2.截出指定位置(第2列)字串,該字串不包含"abc"

第一步:\s+\s+((\s)+)\s+\s+(先提出第二列)

第二步:\s+\s+(((?!abc)\s)+)\s+\s+(第二列的每個字元前的游標位置往後字串都不能是abc) my @lines = ('111 abc 222','111 xabc 222','111 abcy 222','111 xabcy 222','111 xyz 222'); my $pattern = '^\s+\s+(((?!abc)\s)+)\s+\s+$'; foreach my $line (@lines) else } d:\temp\perl>perl test.pl

abc:mismatched

xabc:mismatched

abcy:mismatched

xabcy:mismatched

***x xabcy:mismatched

*** abcy dabc:mismatched

abcy:mismatched

xyz:matched,z 參考了:使用零寬斷言來匹配不包含連續字串的行

js 字串是否包含某個字元

方法一 indexof 推薦 var str 123 console.log str.indexof 3 1 trueindexof 方法可返回某個指定的字串值在字串中首次出現的位置。如果要檢索的字串值沒有出現,則該方法返回 1。方法二 search var str 123 console.log ...

js 判斷字串是否包含某個字元

方法一 indexof 推薦 var str 123 console.log str.indexof 3 1 trueindexof 方法可返回某個指定的字串值在字串中首次出現的位置。如果要檢索的字串值沒有出現,則該方法返回 1。方法二 search var str 123 console.log ...

mysql 字段判斷是否包含某個字串

select id,learn plan id,sequence,is valid,support goods level from qs study subject plan configuration where is valid 1 and learn plan id 3 and find i...