gpt4 book ai didi

java - 如何在 Pattern.compile() 中转义管道字符

转载 作者:行者123 更新时间:2023-12-01 19:33:19 25 4
gpt4 key购买 nike

当我使用 Patter.comile() 时,我遇到管道 (|) 字符转义问题。我有代码:

import java.util.regex.Matcher;
import java.util.regex.Pattern;

class Scratch {

static String finPatternWithPipe() {
String text = "123|FirstName=First|SecondName=Second|567";
Pattern pattern = Pattern.compile("FirstName=(.*)\\|");
Matcher matcher = pattern.matcher(text);
if (matcher.find()) {
System.out.println(matcher.group(1));
}
return null;
}

public static void main(String[] args) {
Scratch.finPatternWithPipe();
}
}

想要接收结果“First”,但实际结果是“First|SecondName=Second”。如果我更改代码并改为使用正则表达式“FirstName=(.)\|*”使用“FirstName=(.)\|S*”所以结果将如我预期的“First”。我的问题是什么?我想使用管道字符,就像我想在正则表达式字符串中看到的最后一个字符,但不明白如何做到这一点。

最佳答案

您需要使量词变得非贪婪:

Pattern.compile("FirstName=(.*?)\\|")
^ add this

否则,.* 会尽可能匹配,其中包括管道字符。

关于java - 如何在 Pattern.compile() 中转义管道字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58796288/

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