如何使用regex f.ex。分割(在java中)每个单词(用大写字母分隔)和字符串末尾的数字:
For 1)我需要一个包含3个元素的数组:
House
Cat
22
对于2)我需要一个包含2个元素的数组:
Wolf
1
对于3)它应该分为5个元素:
this
Is
The
End
15
我已经尝试了几个小时而没有成功......但我根本没有得到。
以下分为单词:
(?<=[a-z])(?=[A-Z])
但我不知道如何在行尾分割数字。
我真的很感激一些帮助。 非常感谢! 迪迪埃
答案 0 :(得分:0)
您可以将数字匹配模式添加到正向前瞻:
(?<=[a-z])(?=[0-9A-Z])
^^^
请参阅regex demo。但是,此解决方案不会在大写字母和数字之间拆分(因此,EndD15
将在End
和D15
中拆分。
您可以考虑匹配方法(它会更有效和可读),您可以使用
[a-zA-Z][a-z]*|[0-9]+
请参阅this demo。
这将匹配:
[a-zA-Z][a-z]*
- 任何ASCII字母,然后是任何0+小写ASCII字母|
- 或[0-9]+
- 1+位。随着需求的发展,可以进一步调整。示例Java code:
String s = "thisIsTheEnd15";
Matcher m = Pattern.compile("[a-zA-Z][a-z]*|[0-9]+").matcher(s);
List<String> res = new ArrayList<>();
while (m.find()) {
res.add(m.group(0));
}
System.out.println(res);
// => [this, Is, The, End, 15]