gpt4 book ai didi

Java 正则表达式在回溯中只能使用 1 个量词(需要 2 个)

转载 作者:行者123 更新时间:2023-11-30 01:47:12 24 4
gpt4 key购买 nike

在回溯中我不能使用超过 1 个量词。

我制作的正则表达式需要执行以下操作:
- 1d 测试 --> 删除 1d 并保留“测试”
- 测试 1d --> 删除 1d 并保留 'test'
- 1d 测试 1d --> 删除第一个 1d 并保留“测试 1d”

我想要的正则表达式不起作用:

String string = "11d test 1d";

String[] parts =
string.split("(^\\d+[a-zA-Z]\\s)|(\\s\\d+[a-zA-Z]$(?<!^\\d+[a-zA-Z]\\s.*))");

输出:

test

有效的正则表达式(但仅适用于固定长度的字符串,计算点数):

String string = "11d test 1d";

String[] parts =
string.split("(^\d+[a-zA-Z]\s)|(\s\d+[a-zA-Z]$(?<!^\d+[a-zA-Z]\s.......))");

输出:

test 1d

两个量词(在回顾中)是 +(在\d 之后)和 *(在\s 之后)

如果你想自己测试一下,可以将其粘贴到 https://regex101.com/

感谢您帮助我!

最佳答案

你尝试过replaceFirst()吗?

string1.replaceFirst("(^\d+[a-zA-Z]\s)|(\s\d+[a-zA-Z]$)", "");

关于Java 正则表达式在回溯中只能使用 1 个量词(需要 2 个),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57528896/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com