gpt4 book ai didi

java - 正则表达式匹配精确的子字符串java

转载 作者:行者123 更新时间:2023-12-02 12:21:05 24 4
gpt4 key购买 nike

我有一个如下的字符串

TestFilter('value') AND LoadTestFilter('value1') AND UserFilter(value2) OR TestFilter('value3')

我只想从上面的字符串中提取 TestFilter 和括号。我希望正则表达式仅匹配这两个子字符串

 TestFilter('value')
TestFilter('value3')

我尝试过下面的正则表达式

.*TestFilter\\((.*?)\\).*

它正在工作,但它也与字符串中的 LoadTestFilter 匹配

如何仅匹配 TestFilter。

最佳答案

    String s = "TestFilter('value') AND LoadTestFilter('value1') AND UserFilter(value2) OR TestFilter('value3')";
Matcher m = Pattern.compile("\\bTestFilter\\(.*?\\)").matcher(s);
while (m.find()) {
System.out.println(m.group(0));
}

说明:

这里的关键是\b,它匹配单词边界。我使用的正则表达式中的 \b 在匹配的最开始和 TestFilter 之前匹配单词边界。转换为不太像正则表达式的语言,我们不需要在 TestFilter 之前有任何字母。

根据您的评论,您看到已尝试.*\bTestFlter\(.*?\)。由于前面有 .*,因此这不起作用。您基本上匹配一堆随机字符,后跟单词边界,“TestFilter”,然后是一对括号,其中包含随机内容。这将匹配整个字符串,因为 TestFilter 的最后一个实例前面是单词边界,然后是一堆随机字符。

关于java - 正则表达式匹配精确的子字符串java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45778756/

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