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

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

Chinaunix

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

perl 字符串替換問(wèn)題, 困擾中 [復(fù)制鏈接]

論壇徽章:
1
程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-03 06:20:00
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2015-07-07 18:47 |只看該作者 |倒序?yàn)g覽
本帖最后由 bt21cnzy21st 于 2015-07-08 16:39 編輯

我有一個(gè)字符串類似:

(1,1,{1,1},{1,1,{2,2},cco1{2,2},cbax[{2,2},{2,2}]},{ccp1[{2,2},{2,2}]})

這里面有大括號(hào)嵌套大括號(hào), 我想做到的是將第二層大括號(hào)內(nèi)的逗號(hào),全部替換成 | 符號(hào).


替換后效果如下:

(1,1,{1,1},{1,1,{2|2},cco1{2|2}|cbax[{2|2}|{2|2}]},{ccp1[{2|2}|{2|2}]})

這個(gè)shell應(yīng)當(dāng)如何寫呢,我研究了好久, 求大神現(xiàn)身

--------------------------------------------------------------------------------------------------------------------------------------------------
20150708 add.

謝謝朋友的熱心幫助, 十分感謝了。 不好意思了, 昨天是我把需求搞錯(cuò)了, 現(xiàn)在的需求是:

如下字符串:
(1,1,{1,1,cco1{x,x},cbax[{y,y},{z,z}]})

我需要將 cco1{x,x},cbax[{y,y},{z,z}] 塊中的逗號(hào),全部替換成 “|”,

替換后的效果如下:

(1,1,{1,1,cco1{x|x},cbax[{y|y}|{z|z}]})

現(xiàn)在需要將形如:cco1{}和cbax[{},{}]中的逗號(hào)全部替換

字符串中的cco1, cbax不確定,有可能還有其他名字如:cc02, cbax02等等。。。。

我對(duì)perl不太熟悉, 感謝熱心的朋友,給個(gè)可以運(yùn)行的代碼,先謝謝了。






論壇徽章:
1
程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-03 06:20:00
2 [報(bào)告]
發(fā)表于 2015-07-07 18:57 |只看該作者
ding

論壇徽章:
1
程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-03 06:20:00
3 [報(bào)告]
發(fā)表于 2015-07-07 19:04 |只看該作者
, 頂  頂  頂  頂

論壇徽章:
1
程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-03 06:20:00
4 [報(bào)告]
發(fā)表于 2015-07-07 21:17 |只看該作者
頂 頂

論壇徽章:
3
2015亞冠之阿爾希拉爾
日期:2015-08-15 16:33:2215-16賽季CBA聯(lián)賽之四川
日期:2016-01-03 13:37:0515-16賽季CBA聯(lián)賽之四川
日期:2016-06-13 15:53:36
5 [報(bào)告]
發(fā)表于 2015-07-07 22:08 |只看該作者
本帖最后由 minirain 于 2015-07-07 22:18 編輯

bt21cnzy21st 發(fā)表于 2015-07-07 18:47
我有一個(gè)字符串類似:
(1,1,{1,1},{1,1,{2,2},cco1{2,2},cbax[{2,2},{2,2}]},{ccp1[{2,2},{2,2}]})
(1,1,{1,1},{1,1,{2|2},cco1{2|2}|cbax[{2|2}|{2|2}]},{ccp1[{2|2}|{2|2}]})
上面紅色“|”全是屬于花括號(hào)第一層,不屬于第二層!


我明天告訴你吧。
{ccp1[{2|2}|{2|2}]}->{ccp1[{2|2}{2|2}]},紅色逗號(hào)不屬于第二層括號(hào),怎么改成“|”。規(guī)則不清楚是很難搞出來(lái)的。!

求職 : 軟件工程師
論壇徽章:
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
6 [報(bào)告]
發(fā)表于 2015-07-07 22:20 |只看該作者
本帖最后由 104359176 于 2015-07-07 23:11 編輯

正則表達(dá)式是一門描述字符串的語(yǔ)言,但缺少遞歸和符號(hào),Perl5 表示遞歸和符號(hào)的規(guī)則隱晦,難以理解,難以表述,這類問(wèn)題,只能用有限的迭代來(lái)解決。
  1. use 5.012;

  2. my $str = '(1,1,{1,1},{1,1,{2,2},cco1{2,2},cbax[{2,2},{2,2}]},{ccp1[{2,2},{2,2}]})';

  3. $str =~ s/
  4. (?<=\{) # 不捕獲開(kāi)始大括號(hào)
  5. (
  6. (?:\{.*?\} | [^\{\}]+)+ 大括號(hào)必須是成對(duì)的,而且只能有一層
  7. )
  8. (?=\})  # 不捕獲結(jié)束大括號(hào)
  9. /replace_str($1)/xmsge;

  10. say $str;

  11. sub replace_str {
  12.   my $str = shift;
  13.   $str =~ s/(\{.*?\})/replace_comma($1)/ge;
  14.   return $str;
  15. }

  16. sub replace_comma {
  17.   my $str = shift;
  18.   $str =~ s/,/:/g;
  19.   return $str;
  20. }
復(fù)制代碼

論壇徽章:
20
卯兔
日期:2015-01-26 22:05:142015亞冠之薩濟(jì)拖拉機(jī)
日期:2015-09-10 15:15:282015亞冠之阿爾希拉爾
日期:2015-09-25 17:37:53程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-10-03 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-12-09 06:20:00CU十四周年紀(jì)念徽章
日期:2015-12-17 09:07:15程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-12-25 06:20:34程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-12-25 06:20:34程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-12-25 06:20:342015亞冠之廣州富力
日期:2015-08-27 19:29:56每日論壇發(fā)貼之星
日期:2015-08-26 06:20:002015亞冠之阿爾希拉爾
日期:2015-05-18 17:26:27
7 [報(bào)告]
發(fā)表于 2015-07-08 09:27 |只看該作者
本帖最后由 songyc_2015 于 2015-07-08 09:30 編輯

回復(fù) 6# 104359176
太牛,學(xué)習(xí)了~~~~,s///xmsge中的x和m選項(xiàng)是什么意思,可否解釋一下嗎?

論壇徽章:
20
卯兔
日期:2015-01-26 22:05:142015亞冠之薩濟(jì)拖拉機(jī)
日期:2015-09-10 15:15:282015亞冠之阿爾希拉爾
日期:2015-09-25 17:37:53程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-10-03 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-12-09 06:20:00CU十四周年紀(jì)念徽章
日期:2015-12-17 09:07:15程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-12-25 06:20:34程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-12-25 06:20:34程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-12-25 06:20:342015亞冠之廣州富力
日期:2015-08-27 19:29:56每日論壇發(fā)貼之星
日期:2015-08-26 06:20:002015亞冠之阿爾希拉爾
日期:2015-05-18 17:26:27
8 [報(bào)告]
發(fā)表于 2015-07-08 09:28 |只看該作者
回復(fù) 1# bt21cnzy21st
  1. $cat test.pl
  2. #!/usr/bin/env perl
  3. use strict;
  4. use warnings;
  5. use Data::Dumper;

  6. my $str = '(1,1,{1,1},{1,1,{2,2},cco1{2,2},cbax[{2,2},{2,2}]},{ccp1[{2,2},{2,2}]})';
  7. my @arr = split /,/, $str;
  8. my ($flag, $rs) = (0, "");
  9. for my $item (@arr)
  10. {
  11.         $flag++ if $item =~ /{/;
  12.         $flag-- if $item =~ /}/;
  13.         $item = $flag eq 2 ? $item."|" : $item.",";
  14.         $rs .= $item;
  15. }
  16. $rs =~ s/,$//;
  17. print $rs, "\n";
  18. $perl test.pl
復(fù)制代碼

論壇徽章:
3
2015亞冠之阿爾希拉爾
日期:2015-08-15 16:33:2215-16賽季CBA聯(lián)賽之四川
日期:2016-01-03 13:37:0515-16賽季CBA聯(lián)賽之四川
日期:2016-06-13 15:53:36
9 [報(bào)告]
發(fā)表于 2015-07-08 11:16 |只看該作者
本帖最后由 minirain 于 2015-07-09 14:38 編輯

回復(fù) 8# songyc_2015
  1. #!/usr/bin/env perl

  2. use strict;
  3. use warnings;


  4. my ($nested);

  5. my $string = '(1,1,{1,1},{1,1,{2,2},cco1{2,2},cbax[{2,2},{2,2}]},{ccp1[{2,2},{2,2}]})';
  6.    $string =~ s/((?:\{)|(?:\}))/($1 eq "\{") ?
  7.                                          "\!".($nested++).$1:
  8.                                             ($nested > 0)?$1.(--$nested)."\!":$1/gxe ;  #用!0 0!、!1 1!、!2 2!標(biāo)記{層級(jí)1層、2層、3層

  9. my $nest = 1;# 0為{第1層級(jí),1為{第2層級(jí)
  10. $string =~ s/\!$nest(.*?)$nest\!/($a=$1,$a=~s^\,^\|^g,$a)/ge ;
  11. $string =~ s/\!\d+//g; $string =~ s/\d+\!//g;

  12. print $string, "\n";
復(fù)制代碼

論壇徽章:
1
程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-03 06:20:00
10
發(fā)表于 2015-07-08 16:35
回復(fù) 5# minirain


謝謝朋友的熱心幫助, 十分感謝了。 不好意思了, 昨天是我把需求搞錯(cuò)了, 現(xiàn)在的需求是:

如下字符串:
(1,1,{1,1,cco1{x,x},cbax[{y,y},{z,z}]})

我需要將 cco1{x,x},cbax[{y,y},{z,z}] 塊中的逗號(hào),全部替換成 “|”,

替換后的效果如下:

(1,1,{1,1,cco1{x|x},cbax[{y|y}|{z|z}]})

現(xiàn)在需要將形如:cco1{}和cbax[{},{}]中的逗號(hào)全部替換

字符串中的cco1, cbax不確定,有可能還有其他名字如:cc02, cbax02等等。。。。

我對(duì)perl不太熟悉, 感謝熱心的朋友,給個(gè)可以運(yùn)行的代碼,先謝謝了。
您需要登錄后才可以回帖 登錄 | 注冊(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