我正在Java中寻找一个正则表达式,如果字符串中存在角括号的开头和结尾,我可以删除它们。 例如1
str = "abc <someting> def < 0"
output: "abc someting def < 0"
如果有打开或关闭,则该大括号应保持原样。
例如2
str = "abc <some <thing>> def < 0"
output : "abc some thing def < 0"
我遵循了其他 stackoverflow QA,但没有任何帮助。
以下是我尝试过的
"\\<[^\\>]*?\\)"
"\\<|\\>"
提前致谢!!!
最佳答案
您可以执行循环正则表达式替换,直到没有任何更改完成。我以为您正在谈论由括号包围的无括号文本。在这种情况下,正则表达式为 <([^>]*)>
,它捕获第一组中的内部文本(名为 $1
)。
在下面的示例中, while
循环线检查 str
是否值与 str.replaceAll()
的结果不同,它被分配给 str
检查后1。如果它们相等,则循环结束,即没有任何内容被替换,因此没有要删除的括号。
public class Test {
public static void main(String args[]) {
String str = "abc <some <thing>> def < 0";
while (!str.equals(str = str.replaceAll("<([^>]*)>", "$1")));
System.out.println(str);
}
}
输出:
~$ javac Test.java
~$ java Test
abc some thing def < 0
<小时/>
1 str.equals()
的目标引用制成before参数评估,所以在赋值之前。
关于java - 从字符串中删除尖括号 < 和 > : Java regex,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59569589/