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

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
12下一頁
最近訪問板塊 發(fā)新帖
查看: 5646 | 回復(fù): 15
打印 上一主題 下一主題

多重關(guān)鍵字匹配定位 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2013-10-31 18:28 |只看該作者 |倒序瀏覽
現(xiàn)有以下的文本信息

  1………………A………………
  2………………………………
  3…………A…………………………
  4………C…………………
  5…………B…………………………
  6…………………………
  7…………C………………
  8…………A……………………
  9…………………………
  10…………………………
  11………………………………
  12…………………………
  13…………B………………
  14…………A…………
  15………………C…………

  目標:用perl提取出從關(guān)鍵字A到關(guān)鍵字C之間且包含關(guān)鍵字B的信息, 且關(guān)鍵字A和關(guān)鍵字B之間的距離最短.(在上述例子中,就是第3行到第7行的信息。在實際文本中,沒有上述的行號)
  我的想法是:提取每個關(guān)鍵字A所在行號,提取每個關(guān)鍵字B所在的行號,然后計算出關(guān)鍵字A和關(guān)鍵字B行號之間的最小值,同時要求關(guān)鍵字B的行號一定要大于關(guān)鍵字A的行號(即不能是第13行到第14行)。在此基礎(chǔ)上計算出關(guān)鍵字A到關(guān)鍵字C的距離,然后提取相應(yīng)的信息。這樣就可以排除第14行到15行的相關(guān)文本,同時也不會只提取第3到第4行的信息。
  我目前看到的程序,都是每個關(guān)鍵字對應(yīng)一個行號.所以請教各位高手,該如何解決這個問題。

論壇徽章:
5
亥豬
日期:2013-10-15 13:41:04CU十二周年紀念徽章
日期:2013-10-24 15:41:34申猴
日期:2013-10-28 10:55:45辰龍
日期:2013-10-31 13:29:29丑牛
日期:2014-02-14 11:25:54
2 [報告]
發(fā)表于 2013-10-31 19:01 |只看該作者
設(shè)定幾個狀態(tài)搞個狀態(tài)遷移圖出來就差不多了吧

論壇徽章:
0
3 [報告]
發(fā)表于 2013-10-31 19:06 |只看該作者
請教樓上,如何做perl的狀態(tài)遷移圖?我是Perl的初學(xué)者。

求職 : 軟件工程師
論壇徽章:
3
程序設(shè)計版塊每日發(fā)帖之星
日期:2015-10-07 06:20:00程序設(shè)計版塊每日發(fā)帖之星
日期:2015-12-13 06:20:00程序設(shè)計版塊每日發(fā)帖之星
日期:2016-05-05 06:20:00
4 [報告]
發(fā)表于 2013-10-31 19:35 |只看該作者
  1. qr/A[^AB]+B[^C]+C/
復(fù)制代碼

論壇徽章:
0
5 [報告]
發(fā)表于 2013-10-31 20:57 |只看該作者
好像不對呀!我編了以下程序
my $file1="d:\\test\\test.txt";
open (INPUT, "<$file1")         or die "Couldn't open $file1 forr reading: $!\n";
my $buf = <INPUT>;
  if ($buf =~qr/A[^AB]+B[^C]+C/){
   open OUTPUT, ">d:\\testout\\test1.txt" or die;
   print OUTPUT "$buf";
   close OUTPUT or die;
}
但是運行出來的結(jié)果和原先的表格一樣。請教我的程序那里有問題?謝謝!

論壇徽章:
3
CU十二周年紀念徽章
日期:2013-10-24 15:41:34子鼠
日期:2013-12-14 14:57:19射手座
日期:2014-04-25 21:23:23
6 [報告]
發(fā)表于 2013-10-31 21:10 |只看該作者
回復(fù) 5# zhuzhujd


    $/ 設(shè)置為空,讀取整個文本;
    默認是\n

論壇徽章:
0
7 [報告]
發(fā)表于 2013-10-31 21:19 |只看該作者
回復(fù) 6# mcshell


    請教該如何修改?我剛開始學(xué)perl,很多命令還非常不熟悉。謝謝!

論壇徽章:
3
CU十二周年紀念徽章
日期:2013-10-24 15:41:34子鼠
日期:2013-12-14 14:57:19射手座
日期:2014-04-25 21:23:23
8 [報告]
發(fā)表于 2013-10-31 21:45 |只看該作者
  1. perl -lne  'BEGIN{$/=undef};1 while(/(A[^AB]+B[^C]+C)(?{print $1})/g)' test.txt
復(fù)制代碼
回復(fù) 7# zhuzhujd


   

論壇徽章:
0
9 [報告]
發(fā)表于 2013-10-31 21:49 |只看該作者
mcshell 發(fā)表于 2013-10-31 21:45
回復(fù) 7# zhuzhujd

因為類似的文本還有1000多個,我想用循環(huán)語句一次做完。你的方法只能做一個文件。可否請幫忙調(diào)試一下上面的語句。謝謝!

論壇徽章:
0
10 [報告]
發(fā)表于 2013-10-31 22:30 |只看該作者
回復(fù) 8# mcshell

運行了上述程序,返回結(jié)果為:
can't find string terminator "'" anywhere before EOF at -e line 1.
   
您需要登錄后才可以回帖 登錄 | 注冊

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

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP