gpt4 book ai didi

java - 模式匹配时排除某个模式位于另一个模式内部时

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

我有一个由 3rdParty 应用程序提供给我的字符串。我想将它们标记化并使其成为键值对。

name=\"Student one\" grade=\"fifth grade\" gender=m place=\"some place in this earth\" dob=30/02/1900 enrolled

预期标记化输出为

name = \"Student one\"
grade=\"fifth grade\"
gender=m
place=\"some place in this earth\"
dob=30/02/1900

我不能简单地根据空间进行标记,因为\"\"模式中有一些空格,我想省略。

在第二次出现\"时进行模式匹配也没有帮助,因为我在\"\"之间没有性别=m

如何根据模式进行模式匹配,并在输入介于\"和\"之间时避免进行模式匹配

最佳答案

以下怎么样:

(?:\\"[^"\\]*\\"|[^\s\\"])+

在Java中,可以这样使用(欢迎来到Java反斜杠 hell ):

List<String> matchList = new ArrayList<String>();
Pattern regex = Pattern.compile(
"(?: # Start of group, matching...\n" +
" \\\\\" # an escaped quote\n" +
" [^\"\\\\]* # followed by 0+ characters except backslashes or quotes\n" +
" \\\\\" # and another escaped quote\n" +
"| # OR\n" +
" [^\\s\\\\\"] # a character except spaces, backslashes or quotes.\n" +
")+ # Repeat as many times as possible (at least once)",
Pattern.COMMENTS);
Matcher regexMatcher = regex.matcher(subjectString);
while (regexMatcher.find()) {
matchList.add(regexMatcher.group());
}

查看live on regex101.com .

关于java - 模式匹配时排除某个模式位于另一个模式内部时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22499778/

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