我不知道如何表达这个问题的标题,但想象一下我有以下字符串:
(1,2)、(3,(4))
我想要一个正则表达式,它允许我获得1,2
和3,(4)
我目前拥有的正则表达式是\\([^)]*)\\
。
这个正则表达式的问题是,它得到了1,2
和3,(4
。这是因为它与(4)
的括号匹配。但我需要一个正则表达式,它忽略4的括号,只匹配外部的,如果这有意义的话。
编辑:为了更深入地了解这个问题,这正是我所期望的字符串类型:(STRING1,STRING2),
string
是一个随机字符字符串(它可以有字母、数字、空格和其他随机符号)。由于它有随机字符,字符串本身可以有括号,这将触发正则表达式。我基本上需要跟踪发现的每个括号,我可以忽略和其他开括号匹配的闭括号。
注:在此期间,此问题已(正确)作为副本关闭。下面是一个有点幼稚,当然也不是完美的java算法实现,它非常类似于这个答案中提出的一个算法,这个答案与链接副本的公认答案相关联。
如果你只对最外层的配对偏执狂感兴趣,这样的东西可能会做:
public static void main(String[] args) {
String s = "(1,2),(3,(4))";
ArrayList<String> matches = new ArrayList<>();
int depth = 0;
int startIndex = 0;
int i = 0;
for (char c : s.toCharArray()) {
if (c == '(') {
if (depth == 0) {
startIndex = i;
}
depth++;
}
if (c == ')') {
depth--;
if (depth == 0) {
matches.add(s.substring(startIndex+1, i));
}
}
i++;
}
System.out.println(matches.size());
System.out.println(matches);
}
请注意,此代码不处理输入中包含的结束语多于开始语的情况,深度
仅为负值。您可能需要为这些情况添加sytax错误处理(我相信还有其他情况)。
谢谢你的帮助
如何在不包含连续子字符串baa的字母表{a,b,c}上表达正则表达式?
我正在尝试在文本中查找html标签,如下所示: 但是颜色部分可以改变(比如#bbbbbb)…我想我可以为此使用正则表达式,对吗?但是我不确定我怎么能忽略它的颜色部分… 你能帮我吗?这可能吗? 非常感谢你
我正在尝试使用python中的正则表达式。我构建了正则表达式,如下所示。我知道用于匹配搜索字符串的开头。我已使用包含多个的匹配模式构建框架,但我不确定将如何尝试匹配搜索字符串中的模式。 我预计会引发错误,关于无效的正则表达式,但它不会引发任何错误,也不会返回任何匹配项。 所以,我的问题是或是有效的正则表达式吗?
我需要编写一个具有以下规则的正则表达式: null null 这些示例无效: > 12--11(因为它包含两个连字符) 1-2345(因为它包含5号) <>是字符出现在最后一个位置,那么在字符之前必须有一个数字not hypen。 即11-A(必须不及格)11-1A(必须及格)
我是正则表达式的初学者,并尝试搜索特定的数字模式。以下数据以 XML 格式嵌入。 要求是提取数据(最里面的列表)。在这个例子中,数据从24779开始到24760。注意:每次数据可能不是从“24”开始。因此,我计划通过以下逻辑提取:如果标签名(在本例中:DUT_1_PC)具有非零的有效数据,并且有效数据的计数大于100,用逗号分隔,则提取该列表及其标签名(DUT_1_PC)。 我无法提取所需的数据。