gpt4 book ai didi

java - 正则表达式忽略引号之间的文本

转载 作者:行者123 更新时间:2023-11-30 05:57:57 29 4
gpt4 key购买 nike

我有一个正则表达式,它是 [\\.|\\;|\\?|\\!][\\s]
这用于拆分字符串。但我不希望它拆分 。 ; ? ! 如果它在引号中。

最佳答案

我不会使用 split,而是使用 Pattern & Matcher。

演示:

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

public class Main {

public static void main(String[] args) {

String text = "start. \"in quotes!\"; foo? \"more \\\" words\"; bar";

String simpleToken = "[^.;?!\\s\"]+";

String quotedToken =
"(?x) # enable inline comments and ignore white spaces in the regex \n" +
"\" # match a double quote \n" +
"( # open group 1 \n" +
" \\\\. # match a backslash followed by any char (other than line breaks) \n" +
" | # OR \n" +
" [^\\\\\r\n\"] # any character other than a backslash, line breaks or double quote \n" +
") # close group 1 \n" +
"* # repeat group 1 zero or more times \n" +
"\" # match a double quote \n";

String regex = quotedToken + "|" + simpleToken;

Matcher m = Pattern.compile(regex).matcher(text);

while(m.find()) {
System.out.println("> " + m.group());
}
}
}

产生:

> start
> "in quotes!"
> foo
> "more \" words"
> bar

如您所见,它还可以处理带引号的标记内的转义引号。

关于java - 正则表达式忽略引号之间的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4917932/

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