+ -
当前位置:首页 → 问答吧 → 看一下這個正則表達式

看一下這個正則表達式

时间:2010-08-17

来源:互联网

需要匹配的是xxxXX, x is [a-zA-Z0-9],首字母不為數字,XX為一特定的單詞

最先想到的是lookingbehind,但是似乎只能在前面定長的情況下,比如foo(?=bar)
如果我想匹配fobar,foobar,lsbar等等怎麽辦

當然只是一個獨立的單詞好辦,問題是這是一個字符串的一部分,所以沒法用bar$

thanks for help

作者: ztkx   发布时间: 2010-08-17

回复 ztkx


    bar\b

作者: guap514   发布时间: 2010-08-17

回复 guap514

不好意思,寫錯了我不該寫$的,具體是這樣

ou=xxxx,ou=xxxx,ou=xxxCA,ou=xxxxCA,

沒辦法,以前的系統是這麽寫的,所以我現在要把CA域分離出來,like ou=xxxCA,ou=xxxxCA,
ou的個數不固定,xxx的位數也不固定

作者: ztkx   发布时间: 2010-08-17

my $str = "ou=xxxx,ou=xxxx,ou=xxxCA,ou=xxxxCA";
while ($str =~ /(ou=[a-zA-Z]\w*CA)/g)
{
        print $1, "\n";
}

作者: 黑色阳光_cu   发布时间: 2010-08-17

split一下不是可以用\b了

作者: yybmsrs   发布时间: 2010-08-17

回复 黑色阳光_cu

謝謝,如果xxxx内部包含CA呢, like ou=ACAD, or ou=DCANUCA

作者: ztkx   发布时间: 2010-08-17

本帖最后由 黑色阳光_cu 于 2010-08-17 13:12 编辑

#!/bin/env perl

use strict;
use warnings;

my $str = "ou=xxxx,ou=xxxx,ou=xxxCA,ou=xxxxCA, ou=ACAD, ou=DCANUCA";
while ($str =~ /(ou=[a-zA-Z]\w*CA)\b/g)
{
        print $1, "\n";
}

作者: 黑色阳光_cu   发布时间: 2010-08-17

thanks

作者: ztkx   发布时间: 2010-08-17

while ($str =~ /(ou=[a-zA-Z]\w*CA)$/g;
为什么换成这样就只能打印出ou=DCANUCA
$不是正则表达式里的字符串结束么

作者: shilin320   发布时间: 2010-08-17