一、幾個問題
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...