gpt4 book ai didi

java - 试图为我的查询找到合适的正则表达式

转载 作者:行者123 更新时间:2023-12-02 08:13:39 25 4
gpt4 key购买 nike

Pattern p1 = Pattern.compile("(?:^|)'([^']*?)'(?:$|)");    
Matcher m = p1.matcher(input);
//Matcher m = p2.matcher(testcases);
while (m.find()) {
output += (m.group().replace("\'", "").trim() + "/");
}

输入

/content/folder[@name='folder query 2']/folder[@name='Share file Zone']/folder[@name='steve']/folder[@name="steve's Personal Folder"]/folder[@name='Backup']/folder[@name='20150317']/folder[@name='.Archive']

输出应该是-

folder query 2, 
Share file zone,
steve,
steve's Personal folder,
Backup,
20150317,
.Archive

出于某些原因,我的正则表达式似乎只读取带引号的单词,因此它不考虑 steve 的双引号。我正在尝试格式化查询,因此我需要的只是文件夹名称,而不考虑单引号或双引号,而不考虑相关的撇号。

最佳答案

使用以下正则表达式:(['"])(.*?)\1

它匹配开头引号(单引号或双引号),将该字符捕获为捕获 #1,将文本捕获为捕获 #2,并通过匹配捕获 #1 以开头使用的相同引号结束。

当写成 Java 字符串文字时,记得转义 "\

测试

String input = "/content/folder[@name='folder query 2']/folder[@name='Share file Zone']/folder[@name='steve']/folder[@name=\"steve's Personal Folder\"]/folder[@name='Backup']/folder[@name='20150317']/folder[@name='.Archive']";
for (Matcher m = Pattern.compile("(['\"])(.*?)\\1").matcher(input); m.find(); )
System.out.println(m.group(2));

输出

folder query 2
Share file Zone
steve
steve's Personal Folder
Backup
20150317
.Archive

关于java - 试图为我的查询找到合适的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43898774/

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