【发布时间】:2014-09-30 12:12:54
【问题描述】:
我编写了一些 java 代码来将字符串拆分为字符串数组。首先,我使用正则表达式模式"\\,\\,|\\," 分割该字符串,然后使用模式"\\,|\\,\\," 分割该字符串。为什么第一个输出和第二个输出有区别?
public class Test2 {
public static void main(String[] args){
String regex1 = "\\,\\,|\\,";
String regex2 = "\\,|\\,\\,";
String a = "20140608,FT141590Z0LL,0608103611018634TCKJ3301000000018667,3000054789,IDR1742630000001,80507,1000,6012,TCKJ3301,6.00E+12,ID0010015,WADORI PURWANTO,,3000054789";
String ss[] = a.split(regex1);
int index = 0;
for(String m : ss){
System.out.println((index++)+ ": "+m+"|");
}
}
}
使用regex1时的输出:
0: 20140608|
1: FT141590Z0LL|
2: 0608103611018634TCKJ3301000000018667|
3: 3000054789|
4: IDR1742630000001|
5: 80507|
6: 1000|
7: 6012|
8: TCKJ3301|
9: 6.00E+12|
10: ID0010015|
11: WADORI PURWANTO|
12: 3000054789|
而当使用regex2:
0: 20140608|
1: FT141590Z0LL|
2: 0608103611018634TCKJ3301000000018667|
3: 3000054789|
4: IDR1742630000001|
5: 80507|
6: 1000|
7: 6012|
8: TCKJ3301|
9: 6.00E+12|
10: ID0010015|
11: WADORI PURWANTO|
12: |
13: 3000054789|
我需要解释一下正则表达式引擎在处理这种情况时是如何工作的。
【问题讨论】:
-
你不必引用
,。 -
@MarounMaroun 你能根据我的问题给出具体答案吗...
-
MarounMaroun comment 并非旨在成为答案,而只是一些可以提高您问题的可读性的附加信息。简而言之:当你可以简单地写
",,|,"时,你不需要写"\\,\\,|\\,"。
标签: java regex regex-greedy regex-alternation