java - 从字符串中删除所有以 char '[' 开头并以 char ']' 结尾的正则表达式实例

标签 java arrays regex string tostring

我需要拍一张 String并删除其中以 character 开头的所有正则表达式'[' 并以 character 结尾']'.

现在我不知道如何解决这个问题。我试图转换 String到字符数组,然后从任何开始的'['到他的结束']'放入空字符,然后将其转换回String使用 toString()方法。

我的代码:

char[] lyricsArray = lyricsParagraphElements.get(1).text().toCharArray();
                for (int i = 0;i < lyricsArray.length;i++)
                {
                    if (lyricsArray[i] == '[')
                    {
                        lyricsArray[i] = ' ';
                        for (int j = i + 1;j < lyricsArray.length;j++)
                        {
                            if (lyricsArray[j] == ']')
                            {
                                lyricsArray[j] = ' ';
                                i = j + 1;
                                break;
                            }
                            lyricsArray[j] = ' ';
                        }   
                    }
                }
                String songLyrics = lyricsArray.toString();
                System.out.println(songLyrics);

但是在 songLyrics 的打印行中,我得到了一些奇怪的东西,比如

[C@71bc1ae4
[C@6ed3ef1
[C@2437c6dc
[C@1f89ab83
[C@e73f9ac
[C@61064425
[C@7b1d7fff
[C@299a06ac
[C@383534aa
[C@6bc168e5

我想有一个简单的方法。任何帮助将不胜感激。

澄清一下: 转换 "abcd[dsadsadsa]efg[adf%@1]d""abcdefgd"

最佳答案

或者简单地使用正则表达式来replace all \\[.*\\] 没有出现:

String songLyrics = text.replaceAll("\\[.*?\\]", "");

text 当然是:

String text = lyricsParagraphElements.get(1).text();

\\[.*\\] 是什么意思?

replaceAll 的第一个参数是描述正则表达式的字符串。正则表达式定义了在字符串中匹配的模式。

所以让我们把它分开:

\\[ 完全匹配字符 [。因为 [ 有一个 special meaning在正则表达式中,它需要被转义(两次!)。

. 匹配任何字符,将其与 ( lazy ) 零或多个运算符 *? 相结合,它将匹配任何字符,直到它最终找到:

\\],匹配字符]。再次注意转义。

关于java - 从字符串中删除所有以 char '[' 开头并以 char ']' 结尾的正则表达式实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36136162/

相关文章:

c++ - 将 matlab 数组(MAT 文件)转换为 C++ 数组

java - 使用Java 8的lambda表达式,将List<Byte>转换为原始byte[],无需外部库

c - strcpy 与 char 指针和 char 数组 C 溢出

Java OpenGL - 在 glutSolidCube 的每侧应用不同的颜色

java - JLS:第 5.2 节赋值转换(转换链)

Java ExecutorService 未按预期工作

java - 使用返回的字符串来调用方法?

php - ZF2 - 用于全词搜索的 MySQL 正则表达式

标识 COBOL 中部分的正则表达式

通过删除重复的子字符串来组合两个字符串