java - 从字符串中删除尖括号 < 和 > : Java regex

标签 java regex string

我正在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/

相关文章:

java - 使用 hibernate 时数据库中的 save() 和 commit() 之间的区别

c# - 如何替换正则表达式中最后一个重复字母以外的所有字母?

c# - 将小数格式化为两位或整数

java - 为什么 CORSFilter 与 ExceptionMapper<Throwable> 冲突?

java - 如何转换 PNG<->JPEG<->TIFF 图像

java - 在 Java 中执行 SQL 批量更新,如果传入的 parm 为 null,则不会更新字段

python - 使用通配符搜索和替换文本文件中的字符串

c++ - 忽略多行注释 git diff

ruby-on-rails - 字符串 "Test ' < 3'"在我的 Rails 应用程序中显示为 "Test ' <3>"

c - 字符串比较 - C