gpt4 book ai didi

java - 正则表达式:如何找到精确的值长度?

转载 作者:行者123 更新时间:2023-11-30 10:52:41 26 4
gpt4 key购买 nike

我得到了给定字符串的这几种情况:

  1. key1=12345
  2. key1=12345&key2=12345
  3. key1=12345123456789
  4. key1=12345123456789&key2=123456789

使用此模式:(key1)=([^&]{5})(|$))

预期的结果是:

  1. 12345
  2. 12345, 12345
  3. 没有
  4. 没有

运行时,结果是:

  1. 12345
  2. 12345, 12345
  3. 12345
  4. 12345, 12345

这意味着 {5} 实际上是将文本剪切给定的长度,即 5 而不是寻找精确的 5
我怎样才能找到准确的 5 而不是剪切文本?

最佳答案

这个模式可以做到:

=([^&]{5})(?:&|$)

它找到 =,后跟 5 个不是 & 的捕获字符,紧接着是 & 或字符串的结尾.

测试

public static void main(String[] args) {
test("key1=12345");
test("key1=12345&key2=12345");
test("key1=12345123456789");
test("key1=12345123456789&key2=123456789");
}
private static void test(String input) {
Matcher m = Pattern.compile("=([^&]{5})(?:&|$)").matcher(input);
List<String> list = new ArrayList<>();
while (m.find())
list.add(m.group(1));
System.out.println(list);
}

输出

[12345]
[12345, 12345]
[]
[]

关于java - 正则表达式:如何找到精确的值长度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34307354/

26 4 0
文章推荐: java - 获取意外元素 '{urn:infinispan:config:7.0}infinispan' 遇到
文章推荐: java - Hibernate 两父一子映射
文章推荐: java - 如何知道 Servlet 应用程序中的 Web 应用程序 URL
文章推荐: java - 无法在 Parcel 中写入 List