有人能帮助我一些正则表达式.
我想将以下字符串拆分为数字,字符串编号
"810LN15"
1方法需要返回810,另一个需要LN,另一个应返回15.
对此唯一真正的解决方案是使用正则表达式,因为数字的长度会增长
我可以用什么正则表达式来容纳这个?
Tho*_*mas 18
String.split 不会给你想要的结果,我想这将是"810","LN","15",因为它必须寻找分裂的标记并将剥离该标记.
尝试Pattern和Matcher替代,使用此正则表达式:(\d+)|([a-zA-Z]+),这将匹配数字与字母的顺序,并获得不同数量/文组(即"AA810LN15QQ12345"将导致群体"AA","810","LN","15" ,"QQ"和"12345").
例:
Pattern p = Pattern.compile("(\\d+)|([a-zA-Z]+)");
Matcher m = p.matcher("810LN15");
List<String> tokens = new LinkedList<String>();
while(m.find())
{
String token = m.group( 1 ); //group 0 is always the entire match
tokens.add(token);
}
//now iterate through 'tokens' and check whether you have a number or text
Run Code Online (Sandbox Code Playgroud)
Ala*_*ore 10
在Java中,与大多数正则表达式一样(Python是一个值得注意的例外),split()正则表达式在找到匹配项时不需要使用任何字符.在这里,我使用了前瞻和后视来匹配任何具有数字一侧的位置和另一个非数字的位置:
String source = "810LN15";
String[] parts = source.split("(?<=\\d)(?=\\D)|(?<=\\D)(?=\\d)");
System.out.println(Arrays.toString(parts));
Run Code Online (Sandbox Code Playgroud)
输出:
[810, LN, 15]
Run Code Online (Sandbox Code Playgroud)