2011-01-05 83 views
1

我的字符串替换字符串中“”在150位置是:PI姓等于我想与<br>

('AARONSON','ABDEL MEGUID','ABDEL-LATIF','ABDOOL KARIM','ABELL','ABRAMS','ACKERMAN','ADAIR','ADAMS','ADAMS-CAMPBELL', 'ADASHI','ADEBAMOWO','ADHIKARI','ADIMORA','ADRIAN', 'ADZERIKHO','AGADJANYAN','AGARWAL','AGOT', 'AGUIRRE-CRUZ','AHMAD','AHMED','AIKEN', 'AINAMO', 'AISENBERG','AJAIYEOBA','AKA','AKHTAR','AKINGBEMI','AKINYINKA','AKKERMAN','AKSOY','AKYUREK', 'ALBEROLA-ILA','ALBERT','ALCANTARA' ,'ALCOCK','ALEMAN', 'ALEXANDER','ALEXANDRE','ALEXANDROV','ALEXANIAN','ALLAND','ALLEN','ALLISON','ALPER', 'ALTMAN','ALVAREZ','AMARYAN','AMBESI-IMPIOMBATO','AMEGBETO','AMOWITZ', 'ANAGNOSTARAS','ANAND','ANDERSEN','ANDERSON', 'ANDRADE','ANDREEFF','ANDROPHY','ANGER','ANHOLT','ANTHONY','ANTLE','ANTONELLI','ANTONY', 'ANZULOVICH', 'APODACA','APOSHIAN','APPEL','APPLEBY','APRIL','ARAUJO','ARBIB','ARBOLEDA', 'ARCHAKOV','ARCHER', 'ARECHAVALETA-VELASCO','ARENS','ARGON','ARGYROKASTRITIS', 'ARIAS','ARIZAGA','ARMSTRONG','ARNON', 'ARSHAVSKY','ARVIN','ASATRYAN','ASCOLI','ASKENASE','ASSI','ATALAY','ATANASOVA','ATKINSON','ATTYGALLE','ATWEH','AU','AVETISYAN','AWE','AYOUB','AZAD','BACSO','BAGASRA','BAKER','BALAS', 'BALCAZAR','BALK','BALKAY','BALLOU','BALRAJ','BALSTER','BANERJEE','BANKOLE','BANTA','BARAL','BARANOWSKA','BARBAS', 'BARBER','BARILLAS-MURY','BARKHOLT','BARNES','BARNETT','BARRETT','BARRIA','BARROW','BARROWS','BARTKE','BARTLETT','BASSINGTHWAIGHTE','BASSIOUNY','BASU','BATES','BATTAGLIA','BATTERMAN','BAUER','BAUERLE','BAUM','BAUME', 'BAUMLER','BAVISTER','BAWA','BAYNE','BEASLEY','BEATTY','BEATY','BEBENEK','BECK','BECKER','BECKMAN','BECKMAN-SUURKULA' ,'BEDFORD','BEDOLLA','BEEBE','BEEMON','BEHETS','BEHRMAN','BEIER','BEKKER','BELL','BELLIDO','BELMAIN', 'BENATAR','BENBENISHTY','BENBROOK','BENDER','BENEDETTI','BENNETT','BENNISH','BENZ','BERG','BERGER','BERGEY','BERGGREN','BERK','BERKOWITZ','BERLIN','BERLINER','BERMAN','BERTINO','BERTOZZI','BERTRAND','BERWICK','BETHONY','BEYERS','BEYRER' ,'BEZPROZVANNY','BHAGWAT','BHANDARI','BHARGAVA','BHARUCHA','BHUJWALLA','BIANCO','BIDLACK','BIELERT','BIER','BIESSMANN','BIGELOW' ,'BILLER','BILLINGS','BINDER','BINDMAN','BINUTU','BIRBECK','BIRGE','BIRNBAUM','BIRO','BIRT','BISHAI','BISHOP','BISSELL','BJORKEGREN','BJORNSTAD','BLACK','BLANCHARD','BLASS','BLATTNER','BLIGNAUT','BLOCH','BLOCK','BLOOM','BLOOM,','BLUM','BLUMBERG' ,'BLUMENTHAL','BLYUKHER','BODDULURI','BOFFETTA','BOGOLIUBOVA', 'BOLLINGER','BOLLS','BOMSZTYK','BONANNO','BONNER','BOOM','BOOTHROYD','BOPPANA','BORAWSKI','BORG','BORIS-LAWRIE','BORISY','BORLONGAN','BORNSTEIN','BORODOVSKY','BORST','BOS','BOTO','BOWDEN','BOWEN','BOYCE-JACINO','BRADEN','BRADY' ,'BRAITHWAITE','BRANN','BRASH','BRAUNSTEIN', 'BREMAN','BRENNAN','BRENNER','BRETSCHER','BREW','BREYSSE','BRIGGS','BRITES','BRITT','BRITTENHAM','BRODIE','BRODY','BROOK','BROOTEN','BROSCO','BROSNAN','BROWN','BROWNE','BRUCKNER','BRUNENGRABER','BRYL','BRYSON','BU','BUCHAN','BUDD','BUDNIK', 'BUEKENS','BUKRINSKY','BULLMORE','BULUN','BURBANO','BURGENER','BURGESS','BURKS','BURMEISTER','BURNETT','BURNHAM','BURNS','BURRIDGE','BURTON','BUSCIGLIO','BUSHEK','BUSIJA','BUZSAKI','BZYMEK','CABA') 

我需要有一个正则表达式这将贪婪地寻找了一个到150个字符,最后一个字符是','。然后用<br /> 取代150的最后一个','任何建议请问?

我用这个','(?=[^()]*\)),但这一个取代所有的发生。我想要第150个被替换。


谢谢大家的建议。我设法用Java代码来代替正则表达式。

StringBuilder sb = new StringBuilder(html);
int i = 0; while ((i = sb.indexOf("','", i + 150)) != -1) {
int j = sb.lastIndexOf("','", i + 150); sb.insert(i+1, "<BR>"); }
return sb.toString();

然而,这打破在第一次遇到 '' 在150个字符。 任何人都可以帮助修改我的代码,以在150个字符的最后发生'''中包含中断。

+0

现在你已经创建了一个问题,请删除【答案】(http://stackoverflow.com/questions/3697139/replace-comma -in-括号使用正则表达式在Java/4607660#4607660)你先前发布。 – meagar 2011-01-05 20:54:38

+0

@meagar:未注册用户无法删除答案。 – 2011-01-05 22:29:11

+0

再往下看(作为对答案的评论),你写的是你的字符串实际上是一个完整的HTML文档,所以你应该澄清你的问题。我们如何找到这个HTML文档中的字符串?你知道在HTML中使用正则表达式会导致疯狂吗?至少有一些人在计算器上是这么认为的:) – 2011-01-05 22:46:09

回答

0

你会想是这样的:

查找的\([^)]+*,[^)]+*\)每次出现(查找括号包裹字符串中有一个逗号,然后在每一个匹配元素的运行下面的正则表达式:

(.{135,150}[^,]*?), 

的第一个数字是最小号码你想添加一个休息标记之前匹配的字符 - 第二个是最大数量的字符,你会喜欢在插入分隔符之前进行匹配。如果在所涉及的字符之间没有,,则正则表达式将继续消耗字符,直到找到逗号。

+0

感谢您的reply.Gives我错误说无与伦比结束的“)”近17指数 ({135150})[^,] *?)“”(点?) – Viidhya 2011-01-05 19:22:40

+0

@Viidhya - 输入错误;我现在修好了。再来一次。 – 2011-01-05 19:28:12

+0

这worked.In意义上的编译错误。谢谢先生。但是没有达到我的要求。我的字符串实际上是一个包含几个逗号的整个html文档。它也有一个子字符串,像我在开始时提到的那样。我必须在第150个位置的括号内添加br。我希望我更清楚。如果需要,可以给你更多的信息。由于字符限制而受到限制。谢谢。 – Viidhya 2011-01-05 19:44:06

0

你也许可以做到这样的:

regex ~ /(^.{1,14}),/ 
replacement ~ '\1<replacement' or "$1<insert your text>" 

在Perl:

$target = ','x 22; 
$target =~ s/(^ .{1,14}) , /$1<15th comma>/x; 
print $target; 

Output 
,,,,,,,,,,,,,,<15th comma>,,,,,,, 

编辑:作为替代方案,如果要向上突破串入succesive 150以下你可以这样做:

regex ~ /(.{1,150},)/sg 
replacement ~ '\1<br/>' or "$1<br\/>" 
// That is a regex of type global (/g) and include newlines (/s) 

在Perl:

$target = " 

('AARONSON','ABDEL MEGUID','ABDEL-LATIF','ABDOOL KARIM','ABELL','ABRAMS','ACKERMAN','ADAIR','ADAMS','ADAMS-CAMPBELL', 'ADASHI','ADEBAMOWO','ADHIKARI','ADIMORA','ADRIAN', 'ADZERIKHO','AGADJANYAN','AGARWAL','AGOT', 'AGUIRRE-CRUZ','AHMAD','AHMED','AIKEN', 'AINAMO', 'AISENBERG','AJAIYEOBA','AKA','AKHTAR','AKINGBEMI','AKINYINKA','AKKERMAN','AKSOY','AKYUREK', 'ALBEROLA-ILA','ALBERT','ALCANTARA' ,'ALCOCK','ALEMAN', 'ALEXANDER','ALEXANDRE','ALEXANDROV','ALEXANIAN','ALLAND','ALLEN','ALLISON','ALPER', 'ALTMAN', ...) 

    "; 

if ($target =~ s/(.{1,150} ,)/$1<br\/>/sxg) { 
    print $target; 
} 

输出:

('AARONSON','ABDEL MEGUID','ABDEL-LATIF','ABDOOL KARIM','ABELL','ABRAMS','ACKERMAN','ADAIR','ADAMS','ADAMS-CAMPBELL', 'ADASHI','ADEBAMOWO','ADHIKARI',<br/>'ADIMORA','ADRIAN', 'ADZERIKHO','AGADJANYAN','AGARWAL','AGOT', 'AGUIRRE-CRUZ','AHMAD','AHMED','AIKEN', 'AINAMO', 'AISENBERG','AJAIYEOBA','AKA',<br/>'AKHTAR','AKINGBEMI','AKINYINKA','AKKERMAN','AKSOY','AKYUREK', 'ALBEROLA-ILA','ALBERT','ALCANTARA' ,'ALCOCK','ALEMAN', 'ALEXANDER','ALEXANDRE',<br/>'ALEXANDROV','ALEXANIAN','ALLAND','ALLEN','ALLISON','ALPER', 'ALTMAN',<br/> ...)