gpt4 book ai didi

java - Java 中的正则表达式 .replaceAll 和 .split

转载 作者:太空宇宙 更新时间:2023-11-04 07:43:58 25 4
gpt4 key购买 nike

我想知道我必须使用哪个正则表达式。方法内的代码是:

while( (line = bReader.readLine()) != null){
line2 = line.replaceAll("[\\)][\\|]","R");
numbers = line2.split("[\\|]");
}
int num = numbers.length;

我想要的是当line等于

(A#,A#,A#),(B#,B#,C#),(B#,B#,C#),(Bb,Bb,Cb)|(Ab,Ab,Ab),(Bb,Bb,Cb),(Bb,Bb,Cb),(Bb,Bb,Cb)|

它必须返回 num = 0,因为 )| 的所有实例都被 R 替换,并且没有剩下 |。我得到的是 num = 1.

等于

(A#,A#,A#),(B#,B#,C#),(B#,B#,C#),(Bb,Bb,Cb)|A#,B#,C#,D#, E#,F#,G#,  |  ,A,  , ,   ,  ,  ,  ,  ,  ,  , ,   ,  ,  ,  |

它必须返回 num = 2,因为在用 R 替换 )| 后,有两个 | 实例。我在这里得到的确实是 num = 2。希望有人能给我解决办法。

最佳答案

如果您试图找出字符串中存在多少 | 标记,而 ) 无法预测,那么您可以删除这些标记并检查字符串长度如何变化。要检测此类管道,您可以使用 negative look-behind .

int num = s.length() - s.replaceAll("(?<![)])[|]", "").length();

关于java - Java 中的正则表达式 .replaceAll 和 .split,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15621122/

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