gpt4 book ai didi

java - StringBuilder 和正则表达式解析

转载 作者:行者123 更新时间:2023-12-04 05:17:46 27 4
gpt4 key购买 nike

我有一个 StringBuilder我用来构建一个大字符串的对象,分隔 StringBuilder 中的字符串对象使用 "\n"字符,如何在不拆分字符串和循环的情况下有效地围绕该对象构建正则表达式?

例如说我有以下正则表达式:

private static final regexPattern = "(([a-z[1-9]]+)||([1-9[a-z]]+))"

如果我有这个:
String[] myStringList = aStringList.split("\n");

我正在尝试使用 regexPattern 和 myStringList 中的每个字符串构建一个有效的正则表达式。
Pattern p = Pattern.compile(regexPattern + myStringList[i]);

有没有办法做到这一点而不将我的 stringBuilder 分成一个循环并检查每个字符串?我可以以某种方式围绕整个 StringBuilder 对象构建一个大模式吗?

最佳答案

这将从您的输入中构建一个大的“OR”正则表达式,前置 regexPattern到输入字符串的每个部分:

String bigRegex = "(" + regexPattern + aStringList.replace("\n", ")|(" + regexPattern) + ")";

下面是一些代码,显示你得到了什么:
public static void main(String[] args) {
String aStringList = "foo\nbar\nbaz";
String bigRegex = "(" + regexPattern + aStringList.replace("\n", ")|(" + regexPattern) + ")";
System.out.println(bigRegex);
// Pattern p = Pattern.compile(bigRegex);
}

输出:
((([a-z[1-9]]+)||([1-9[a-z]]+))foo)|((([a-z[1-9]]+)||([1-9[a-z]]+))bar)|((([a-z[1-9]]+)||([1-9[a-z]]+))baz)

关于java - StringBuilder 和正则表达式解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14044595/

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