regex Java;将字符串拆分为段

y4ekin9u  于 2022-11-18  发布在  Java
关注(0)|答案(1)|浏览(164)

(警告-使用Google翻译制作)
我正在学习使用正则表达式,同时为自己创建一个简单的程序,该程序将输入一个字符串,该字符串由各种骰子滚动的公式和修饰符组成。例如:
2d6+13+3d10-1d4+5+1d8-6
我有一个正则表达式来搜索像“+-XdY”这样的段:
(^|[\\+-])[1-9]\\d*d[1-9]\\d*
我想从字符串中剪切这样的段,将它们存储为数组以便进一步处理,同时将它们从字符串中删除
Input - string "2d6+13+3d10-1d4+5+1d8-6"
Output - string "+13+5-6" (without any +-XdY) and array of strings {"2d6", "+3d10", "-1d4", "+1d8"} (all of +-XdY)
因此之后可以使用修饰符(使用另一个正则表达式)重复它
Input - string "+13+5-6"
Output - string "" and array of strings {"+13", "+5", "-6"}
并通过末尾的剩余字符串了解数据是否正确输入(空=好)。
问题是我根本找不到合适的工具来从字符串中剪切某些片段并将其保存为数组。
你能帮我吗?或者有一个更简单的算法来完成这个任务?
提前感谢您的帮助!

8hhllhi2

8hhllhi21#

+-之前拆分:

String[] parts = str.split("(?=[+-])");

测试代码:

String str = "2d6+13+3d10-1d4+5+1d8-6";
String[] parts = str.split("(?=[+-])");
System.out.println(Arrays.toString(parts));

输出量:

[2d6, +13, +3d10, -1d4, +5, +1d8, -6]

相关问题