我如何写这个正则表达式倒置?

时间:2013-04-04 05:24:01

标签: java regex

我正在尝试搜索此字符串“Spelled [wurd] Show IPA noun 1.a”

并使用以下方法删除[]之外的所有内容:

String pron = noHTML.replaceAll("\\[.*?]","");  //(there is a double \\ \\ here...)

这取代了里面的一切..如何扭转它? :S

我尝试过组合!和^但它似乎没有工作。

3 个答案:

答案 0 :(得分:3)

我只需用括号中的部分替换整个字符串:

String pron = noHTML.replaceAll(".*?\\[(.*?)\\].*", "$1");

这(1)匹配整个字符串,(2)捕获括号中的部分并将其存储在第一个捕获组中,(3)使用该组作为整个匹配字符串的替换。

在结果中包含括号只是一个问题或向外移动()

String pron = noHTML.replaceAll(".*?(\\[.*?\\]).*", "$1");

答案 1 :(得分:0)

试试这个 -

String pron = noHTML.replaceAll("(^.*\\[)|(\\].*$)",""); 

要包含括号,请使用 lookahead lookbehind -

String pron = noHTML.replaceAll("(^.*(?=\\[))|((?<=\\]).*$)",""); 

有关 lookahead lookbehind 的更多信息,请参阅http://www.regular-expressions.info/lookaround.html

答案 2 :(得分:0)

你需要这个:

String pron = noHTML.replaceAll("\[([^\[\]].*)\]","");

下面:

http://rubular.com/r/95ETge7Pyv