Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/224.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ReplaceAll字符串java正则表达式_Java_Android_Regex_Replaceall - Fatal编程技术网

ReplaceAll字符串java正则表达式

ReplaceAll字符串java正则表达式,java,android,regex,replaceall,Java,Android,Regex,Replaceall,我有一个包含以下内容的字符串: "Hello my name is (0.9%) and (15%) bye (10.5%) also (C9, B6)" 我想替换全部,所以我去掉了包含百分比的括号,而不是像这样的其他数字: "Hello my name is and bye also C9, B6" 目前我有这个,但它删除了我所有的号码,你知道我如何修复它吗: .replaceAll("[\\([0-9]\\%)]",""); 也许是这样的 "Hello my name is (0.9%

我有一个包含以下内容的字符串:

"Hello my name is (0.9%) and (15%) bye (10.5%) also (C9, B6)"
我想替换全部,所以我去掉了包含百分比的括号,而不是像这样的其他数字:

"Hello my name is and bye also C9, B6"
目前我有这个,但它删除了我所有的号码,你知道我如何修复它吗:

.replaceAll("[\\([0-9]\\%)]","");

也许是这样的

"Hello my name is (0.9%) and (15%) bye (10.5%) also (C9, B6)".replaceAll("\\((?:\\d|\\.)+%\\)", "")

此处还会删除每个括号内百分比后的单个空格:

"Hello my name is (0.9%) and (15%) bye (10.5%) also (C9, B6)".replaceAll("\\((?:\\d|\\.)+%\\) ", "")
给出:

Hello my name is and bye also (C9, B6)

移除外括号,并在可选点前后添加匹配的数字

.replaceAll("\\([0-9]+?\\.?[0-9]+?\\%\\)", "");

注意:如果要允许前导点或尾随点,可以将“+”改为“*”。

您的正则表达式没有意义。您正在转义一个括号而不是另一个,并且您只匹配一个数字。为什么
%
被转义了呢?我现在还不确定我正在努力解决这个问题:(结尾的括号发生了什么事?你知道我如何扩展它并删除括号,如果里面有逗号:
“Hello(bye,Hello)reach(Hello)”
会变成
“Hello bye,Hello reach(Hello)”
试试
“您好(拜拜,您好),然后(a,b,c)foo,bar(C9,B6)”.replaceAll(\\([a-zA-Z,]+\\),”)
。它只会删除里面有类似单词的括号,而不去理会数字。(选中,现在应该可以了)谢谢,但基本上我需要删除不完整的括号,例如
”(Hello“
“拜拜”)“
,别管它了”(你好),有什么想法吗?我不知道你说的“不完整的括号”是什么意思?“(C9,“插入”(C9,B6)”算作“不完整”吗?”?这似乎离原来的问题越来越远了。你可能想问另一个问题。注释对这一点不是很好,你不能在这里缩进代码等@KyrilKhaltesky好吧,如果有限制,那么它们可能会有意义……我只想留给你
(hello and hello)将是(hello)”。replaceAll(“(?:\\(([a-zA-Z]+)(?=)|(?:)(?你知道我如何在里面有逗号的情况下扩展并删除括号,所以:
“你好(再见,你好)再次(你好)”
会变成
“你好再见,再次你好(你好)”
对不起,注释不是最好的格式化方式。
最终模式regex=Pattern.compile(\\([\\w\\s]*?)?,[\\w\\s]*?)\\”;
final Matcher Matcher=regex.Matcher(“你好(再见,你好)再次(你好)”;
System.out.println(Matcher.replaceAll($1”);
这会在括号内创建一个捕获组,然后用不带括号的版本替换该匹配。