在大写字母处分割字符串

7

我有以下的输入:

MaintanceGie?\195?\159mannFlock
SupportGie?\195?\159mannFlock
ABCSaskDgfskSblabla

我需要搜索一个正则表达式,以获得以下结果:

Maintance Gie?\195?\159mann Flock
Support Gie?\195?\159mann Flock
ABC Sask Dgfsk Sblabla

对于前两个字符串,我可以使用以下正则表达式([A-Z]+)([^A-Z]*)
我需要做出哪些改变才能使这个正则表达式起作用?

感谢任何建议。


你使用的是哪种编程语言/正则表达式风格? - Tim Pietzcker
3个回答

8
您可以使用正则表达式:
(?=[A-Z][^A-Z])

Ideone链接


请注意,这不会分割 AbC,这可能是期望的行为,也可能不是。 - moinudin
@marcog:没错。如果想要在这种情况下进行拆分,可以使用 split/(?=[A-Z]+[^A-Z]?)/ - codaddict

2

Here is a way to do it in Perl:

#!/usr/bin/perl
use strict;
use warnings;
use 5.10.1;

while(<DATA>) {
    chomp;
    s/(.)([A-Z][^A-Z])/$1 $2/g;
    say $_;
}

__DATA__
MaintanceGie?\195?\159mannFlock
SupportGie?\195?\159mannFlock
ABCSaskDgfskSblabla

输出:

Maintance Gie?\195?\159mann Flock
Support Gie?\195?\159mann Flock
ABC Sask Dgfsk Sblabla

1
([A-Z](?=[^A-Z]))

这将查找任何大写字母后面跟着小写字母的情况。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接