亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
最近訪問(wèn)板塊 發(fā)新帖
查看: 5036 | 回復(fù): 5
打印 上一主題 下一主題

[正則表達(dá)式]請(qǐng)教分組捕獲中的特殊情況 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2014-04-27 11:41 |只看該作者 |倒序?yàn)g覽
文本內(nèi)容:log1

2014-02-12T01:03:24.599Z cpu28:42479)NMP: nmp_ThrottleLogForDevice:2321: Cmd 0x85 (0x4130801e1940, 34849) to dev

"naa.600508b1001cc026e1ee67e9f99d273b" on path "vmhba0:C0:T0:L1" Failed: H:0x0 D:0x2 P:0x0 Valid sense data: 0x5 0x20 0x0. Act:NONE
2014-02-12T01:03:24.599Z cpu28:42479)ScsiDeviceIO: 2337: Cmd(0x4130801e1940) 0x85, CmdSN 0xf96 from world 34849 to dev

"naa.600508b1001cc026e1ee67e9f99d273b" failed H:0x0 D:0x2 P:0x0 Valid sense data: 0x5 0x20 0x0.
2014-02-12T01:03:24.610Z cpu31:52002)ScsiDeviceIO: 2337: Cmd(0x4130801e1940) 0x4d, CmdSN 0xf97 from world 34849 to dev

"naa.600508b1001cc026e1ee67e9f99d273b" failed H:0x0 D:0x2 P:0x0 Valid sense data: 0x5 0x20 0x0.

cat log1 | perl -ne 's/\r//g;print "$1 $2 $3 $4 $5 \n" if /(^.*?.*(Cmd.*?\)).*(naa\.\w+).*(vmhba.*?L).*(H:.*\.)/'              
2014-02-12T01: Cmd 0x85 (0x4130801e1940, 34849) naa.600508b1001cc026e1ee67e9f99d273b vmhba0:C0:T0:L H:0x0 D:0x2 P:0x0 Valid sense data:

0x5 0x20 0x0.
需要匹配5個(gè)字段,其中包括vmhba的 記錄,結(jié)果是輸出第一行匹配后的內(nèi)容,其他沒(méi)有包含hba的記錄都沒(méi)有匹配成功。

cat log1 | perl -ne 's/\r//g;print "$1 $2 $3 $4 $5 \n" if /(^.*?.*(Cmd.*?\)).*(naa\.\w+).*(H:.*\.)/'              
2014-02-12T01: Cmd 0x85 (0x4130801e1940, 34849) naa.600508b1001cc026e1ee67e9f99d273b H:0x0 D:0x2 P:0x0 Valid sense data: 0x5 0x20 0x0.  
2014-02-12T01: Cmd(0x4130801e1940) naa.600508b1001cc026e1ee67e9f99d273b H:0x0 D:0x2 P:0x0 Valid sense data: 0x5 0x20 0x0.  
2014-02-12T01: Cmd(0x4130801e1940) naa.600508b1001cc026e1ee67e9f99d273b H:0x0 D:0x2 P:0x0 Valid sense data: 0x5 0x20 0x0.  
需要匹配4個(gè)字段,但是去掉了匹配vmhba的表達(dá)式,輸出了所有記錄。




cat log1 | perl -ne 's/\r//g;print "$1 $2 $3 $4 $5 \n" if /(^.*?.*(Cmd.*?\)).*(naa\.\w+).*((?:vmhba.*?L){0,1}).*(H:.*\.)/'  
2014-02-12T01: Cmd 0x85 (0x4130801e1940, 34849) naa.600508b1001cc026e1ee67e9f99d273b  H:0x0 D:0x2 P:0x0 Valid sense data: 0x5 0x20 0x0.
2014-02-12T01: Cmd(0x4130801e1940) naa.600508b1001cc026e1ee67e9f99d273b  H:0x0 D:0x2 P:0x0 Valid sense data: 0x5 0x20 0x0.
2014-02-12T01: Cmd(0x4130801e1940) naa.600508b1001cc026e1ee67e9f99d273b  H:0x0 D:0x2 P:0x0 Valid sense data: 0x5 0x20 0x0.
使用非捕獲分組后對(duì)分組匹配一次,實(shí)際上和第一個(gè)一樣,應(yīng)該是匹配了0之后就結(jié)束了?

如果把{n,m}改成?號(hào),實(shí)際上只按0次匹配,和{0,1}是一樣的吧。。。

請(qǐng)問(wèn)有沒(méi)有什么辦法讓這個(gè)正則先匹配vmhba.*?L一次,如果成功那么返回改分組變量;如果沒(méi)有匹配到vmhba.*?L,那么匹配0次。
這個(gè)好像是一個(gè)類似{1,0}的概念,但是n必須小于等于m。

除了用條件語(yǔ)句對(duì)記錄分別進(jìn)行處理,還有沒(méi)有只用正則表達(dá)式解決的方法呢?

附加問(wèn)題:$1 $2 $3..有沒(méi)有哪個(gè)默認(rèn)數(shù)組保存這幾個(gè)記錄的?

論壇徽章:
3
CU十二周年紀(jì)念徽章
日期:2013-10-24 15:41:34子鼠
日期:2013-12-14 14:57:19射手座
日期:2014-04-25 21:23:23
2 [報(bào)告]
發(fā)表于 2014-04-27 18:55 |只看該作者
LZ  你說(shuō)了這么多 ... 我沒(méi)看懂你要表達(dá)什么意思

求職 : 軟件工程師
論壇徽章:
3
程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-10-07 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-12-13 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2016-05-05 06:20:00
3 [報(bào)告]
發(fā)表于 2014-04-27 21:50 |只看該作者
.*  太貪婪,本來(lái)能匹配一個(gè),但想匹配更多,結(jié)果兩手空空,什么也沒(méi)得到。

論壇徽章:
0
4 [報(bào)告]
發(fā)表于 2014-04-28 22:15 |只看該作者
回復(fù) 2# mcshell


     好像是沒(méi)表達(dá)清楚,簡(jiǎn)化一下:


ABCD
ABD
ABD

我現(xiàn)在想做到的是只用一個(gè)正則通過(guò)捕獲,獲取ABCD到變量中,如果沒(méi)有C的話獲取ABD!

我的表達(dá)式是 (A)(B)(C)(D),
這樣就只能獲取ABCD都同時(shí)存在的記錄,包含C的記錄被忽略了;

如果用(A)(B)((?:C)?)(D),這時(shí)候正則會(huì)先按照0次匹配記錄C處理,只能獲取到ABD的記錄。

有辦法實(shí)現(xiàn)嗎?

非常感謝!

附加問(wèn)題是,ABCD獲取后存到 變量$1$2$3$4中,有沒(méi)有默認(rèn)的數(shù)組存儲(chǔ)這幾個(gè)變量呢?

論壇徽章:
145
技術(shù)圖書(shū)徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11獅子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龍
日期:2014-01-08 15:26:12技術(shù)圖書(shū)徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
5 [報(bào)告]
發(fā)表于 2014-04-29 15:07 |只看該作者
本帖最后由 jason680 于 2014-04-29 15:14 編輯

回復(fù) 4# beacon1024

$ perl Re.pl
matched A,B,C,D
matched A,B,,D
didn't match:ABC

$ cat Re.pl

use strict;
use warnings;

while(<DATA>){
  if(my @aMatch = m/(A)(B)((?:C)?)(D)/){
    print "matched ", join(",",@aMatch) , "\n";
  }else{
    print "didn't match:$_";
  }

}
__DATA__
ABCD
ABD
ABC

論壇徽章:
0
6 [報(bào)告]
發(fā)表于 2014-05-01 06:48 |只看該作者
回復(fù) 5# jason680


    好像我過(guò)于簡(jiǎn)化了,數(shù)據(jù)中間實(shí)際上是有很多其他字符的,不只是ABCD,如下:

cat data
.....A.....B.....C......D...
.....A.....B...........D...
.....A.....B...........D...

$cat data | perl -ne 'print "$1 $2 $3 $4 \n" if /(A).*(B).*(C)?.*(D).*/'
A B  D
A B  D
A B  D

$cat data | perl -ne 'print "$1 $2 $3 $4 \n" if /(A).*(B).*(C).*(D).*/'     
A B C D


您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過(guò)ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP