Java正则表达式提取方括号或圆括号内的内容

我正在尝试在方形或圆形中提取字符串。字符串可能只有方括号或圆括号


我正在使用下面的正则表达式。


Pattern p = Pattern.compile("\\[(.*?)\\]|\\((.*?)\\)");


输出字符串也包括括号。下面是代码。


String example = "Example_(xxxxx)_AND_(yyyyy)_2019-01-28";

Pattern p = Pattern.compile("\\[(.*?)\\]|\\((.*?)\\)");

Matcher m = p.matcher(example);

while(m.find()) {

    System.out.println(m.group(1));

}

上述模式给出的输出为


(xxxxx)


(年年)


预期输出为


xxxxx


年年


墨色风雨
浏览 241回答 3
3回答

月关宝盒

您可以编写一个不需要交替的正则表达式,并且只能拥有一个您可以唯一访问的组以获取值,如果您使用积极的环顾四周来使用此正则表达式捕获您的预期值,则效果会更好,(?<=[([])[^()[\]]*(?=[)\]])解释:(?<=[([])- 正面看后面确保前面的字符是(或者[[^()[\]]*- 匹配除左括号或右括号外的任何字符(?=[)\]])- 积极向前看,以确保它匹配)或]演示示例 Java 代码,String s = "Example_(xxxxx)_AND_(yyyyy)_2019-01-28";Pattern p = Pattern.compile("(?<=[(\\[])[^()\\[\\]]*(?=[)\\]])");Matcher m = p.matcher(s);while (m.find()) {&nbsp; &nbsp; System.out.println(m.group());}印刷,xxxxxyyyyy或者,就像我上面提到的那样,您可以使用这个非环顾正则表达式并仅捕获 group1 来获取您的内容,因为这个正则表达式没有任何交替,因此只有一个组。[([]([^()[\]]*)[)\]]没有环视正则表达式的演示带有非环视正则表达式的示例 Java 代码,您需要在其中捕获使用group(1)String s = "Example_(xxxxx)_AND_(yyyyy)_2019-01-28";Pattern p = Pattern.compile("[(\\[]([^()\\[\\]]*)[)\\]]");Matcher m = p.matcher(s);while (m.find()) {&nbsp; &nbsp; System.out.println(m.group(1));}印刷,xxxxxyyyyy

冉冉说

这是一个完整的例子。public class ExtractContentExample {&nbsp; &nbsp; private static final Pattern PATTERN2 = Pattern.compile("^[^\\(]{0,}\\(|([\\)][^\\(\\)]{1,}[\\(])|\\)[^\\)]{0,}$");&nbsp; &nbsp; public void test22212 () {&nbsp; &nbsp; &nbsp; &nbsp;String[] split = PATTERN2.split("(I )Comparison_(am )_AND_(so )_2019-01-28Comparison_(handsome!)");&nbsp; &nbsp; &nbsp; &nbsp;for (int i = 0; i< split.length; i++) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (split[i] != null && !split[i].isEmpty()) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;System.out.println(split[i]);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}&nbsp; &nbsp; &nbsp; &nbsp;}&nbsp; &nbsp;}}我希望这个能帮上忙

尚方宝剑之说

您可以使用前瞻和后视:-(?<=\[).*?(?=\])|(?<=\().*?(?=\))或者您可以将德摩根定律应用于上述正则表达式并使用:-(?<=\[|\().*?(?=\]|\))解释(?<=\[|\()- 前面是[or&nbsp;(.*?- 任意数量的字符,非贪婪(?=\]|\))- 后面是]or)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java