gpt4 book ai didi

java - 正则表达式最佳实践

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:13:40 24 4
gpt4 key购买 nike

我正在学习如何使用正则表达式:

我正在阅读一个文本文件,该文件分为两种不同的部分,由 <:==]:><:==}:> .我需要知道每个部分是否是 ]} , 所以我不能这样做

pattern.compile("<:==]:>|<:==}:>"); pattern.split(text)

这样做:

pattern.compile("<:=="); pattern.split(text)

有效,然后我可以只查看每个子字符串中的第一个字符,但这对我来说似乎很草率,我认为我只是求助于它,因为我没有完全掌握我需要掌握的关于正则表达式的东西:

此处的最佳做法是什么?此外,有没有什么方法可以拆分字符串,同时在结果字符串中保留定界符——这样每个字符串都以定界符开头?

编辑:文件布局如下:

Old McDonald had a farm 
<:==}:>
EIEIO. And on that farm he had a cow
<:==]:>
And on that farm he....

最佳答案

最好不要为此使用 split()。您可以改为进行匹配:

List<String> delimList = new ArrayList<String>();
List<String> sectionList = new ArrayList<String>();
Pattern regex = Pattern.compile(
"(<:==[\\]}]:>) # Match a delimiter, capture it in group 1.\n" +
"( # Match and capture in group 2:\n" +
" (?: # the following group which matches...\n" +
" (?!<:==[\\]}]:>) # (unless we're at the start of another delimiter)\n" +
" . # any character\n" +
" )* # any number of times.\n" +
") # End of group 2",
Pattern.COMMENTS | Pattern.DOTALL);
Matcher regexMatcher = regex.matcher(subjectString);
while (regexMatcher.find()) {
delimList.add(regexMatcher.group(1));
sectionList.add(regexMatcher.group(2));
}

关于java - 正则表达式最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20143723/

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