西安按摩培训学校费用:有关正则表达式的问题,完美的追加50!
DF5Z5F8C6S8F12SD45
匹配:^([A-Z][0-9]{0,2})+$
那要怎样取得第n组的字符呢?
最好用Java来描述
谢谢,完美的追加50分!
这下头痛了,不知要把分给哪位,谢谢你们的回答!
以 ^([A-Z][0-9]{0,2})+$ 匹配 DF5Z5F8C6S8F12SD45 的结果是 DF5Z5F8C6S8F12SD45。
取第n组字符? 你的“字符组”怎么定义?
如果你指的是 D 、F5 、Z5 、F8 、C6 、S8 、F12 、S 、D45 ,把表达式改成 ([A-Z][0-9]{0,2})+? 然后把每一个成功的匹配加入容器里后就可以以号取组了:
import java.util.*;
import java.util.regex.*;
class C {
public static void main( String[] args ) {
String str = "DF5Z5F8C6S8F12SD45",
regex = "([A-Z][0-9]{0,2})+?";
Matcher m = Pattern.compile( regex ).matcher( str );
List groups = new ArrayList( );
while( m.find( ) )
groups.add( m.group( ) );
for( int i = 0; i < groups.size( ); ++i )
System.out.println( "Group " + i + ": " + groups.get( i ) );
}
}
*******************************************************
输出:
Group 0: D
Group 1: F5
Group 2: Z5
Group 3: F8
Group 4: C6
Group 5: S8
Group 6: F12
Group 7: S
Group 8: D45
你调用 String 的 split( ) 时以带有 positive lookbehind 的表达式作为参数即可达到目的:
"DF5Z5F8C6S8F12SD45".split( "(?<=[A-Z]\\d{0,2})" )