0

我的 Java 应用程序将获得以下形式的字符串:

How now [[brown cow ]]. The arsonist [[ had oddly shaped ]] feet. The [[human torch was denied]] a bank loan.

并且需要一个正则表达式/方法来去除[[ ]](以及所有包含的文本)的每个实例,从而将上述字符串转换为:

How now. The arsonist  feet. The  a bank loan.

注意保留的双空格(在arsonistandfeet之间,和 between Theand a)?这也很重要。

不确定此处的正则表达式是否合适,或者是否有更有效的方法来剔除不需要的[[ ]]实例。

4

4 回答 4

3

这是在javascript中。

var text = "How now [[brown cow ]]. The arsonist [[ had oddly shaped ]] feet. The [[human torch was denied]] a bank loan."
text.replace(/\[\[[^\]]+\]\]/g, "")

匹配大括号的正则表达式将是

/\[\[[^\]]+\]\]/g

所以Java等价物将是

text.replaceAll("\[\[[^\]]+\]\]", "");

并将其替换为空字符串

正则表达式,可以同时删除双括号和三括号

text.replaceAll("\[?\[\[[^\]]+\]\]\]?", "")
于 2013-03-19T10:09:48.650 回答
2

这很简单replaceAll

str = str.replaceAll( "\\[\\[[^\\]]*\\]\\]", "" );

假设]括号内为否。

于 2013-03-19T10:14:51.153 回答
2

尝试使用此代码:

public class Test{
public static void main(String[] args) {
    String input = "How now [[brown cow ]]. The arsonist [[ had oddly shaped ]] feet. The [[human torch was denied]] a bank loan.";
    // Will replace all data within braces []
    String replaceAll = input.replaceAll("(\\[.+?\\])|(\\])", "");
    System.out.println(replaceAll);
}

}

希望这可以帮助。

于 2013-03-19T10:15:27.410 回答
2
tring s = "How now [[brown cow ]]. The arsonist [[ had oddly shaped ]] feet. The [[human torch was denied]] a bank loan.";

s=s.replaceAll("\\[.*?\\]","").replace("]","");

输出:

How now . The arsonist  feet. The  a bank loan.
于 2013-03-19T10:17:35.520 回答