- 论坛徽章:
- 0
|
本帖最后由 ztkx 于 2010-08-20 16:52 编辑
需要匹配的是xxxXX, x is [a-zA-Z0-9],首字母不為數字,XX為一特定的單詞
最先想到的是lookingbehind,但是似乎只能在前面定長的情況下,比如foo(?=bar)
如果我想匹配fobar,foobar,lsbar等等怎麽辦
當然只是一個獨立的單詞好辦,問題是這是一個字符串的一部分,所以沒法用bar$
thanks for help
還有一些疑問,對於這樣一個dn- my $dn = "cn=admin, ou=10HH,ou=JCAC,ou=CCXX,ou=ooCA,ou=XXCA,ou=RootCA";
复制代码- my $dn_re = '^(cn\s*=\s*\w+)\s*,\s*
- ((ou\s*=\s*\w*?(?!CA)\b\s*,\s*)*?)
- ((ou\s*=\s*\w*CA\b\s*,\s*)*?)
- (ou\s*=\s*RootCA)';
复制代码 這個表達式的匹配是正確的
- $1 = cn=admin
- $2 = ou=10HH,ou=JCAC,ou=CCXX,
- $4 = ou=ooCA,ou=XXCA,
- $6 = ou=RootCA
复制代码 但是這個就不對了- my $dn_re = '^(cn\s*=\s*\w+)\s*,\s*
- ((ou\s*=\s*\w*?(?!CA)\b\s*,\s*)*)
- ((ou\s*=\s*\w*[b](?=CA)[/b]\b\s*,\s*)*)
- (ou\s*=\s*RootCA)';
复制代码 使用?=斷言或者沒有對二、四組使用非貪婪模式,都回導致匹配錯誤,這時候
- $2 = ou=10HH,ou=JCAC,ou=CCXX,ou=ooCA,ou=XXCA,
- $4 = undef
- $6 = ou=RootCA
复制代码 |
|