我有一个字符串数组。我正在检查数组的每个元素中的以下模式:[[some word]]
。
元素应以两个方括号开头,并以2个方括号结尾,并在它们之间加上单词或句子。
我还需要从[[some word]]
中提取字符串“some word”。我无法弄清楚Java中的正则表达式。它们似乎与PHP等脚本语言非常不同。
EG。如果我在遍历数组时遇到[[this is an example]]
,我应该输出"this is an example"
。对于用双方括号括起来的所有字符串都应该这样做。
答案 0 :(得分:3)
以下代码:
String input = "How to write a regex for words like [[gold]] or [[Archimedes]] in JAVA";
String regex = "\\[\\[(.*?)\\]\\]";
Matcher matcher = Pattern.compile(regex).matcher(input);
int idx=0;
while(matcher.find(idx)){
String match = matcher.group(1);
System.out.println(match);
idx = matcher.end();
}
打印:
gold
Archimedes
实际的正则表达式(没有转义\
)是:
\[\[(.*?)\]\]
答案 1 :(得分:2)
我相信这个正则表达式适合你:
"(?s)\\[\\[(.*?)\\]\\]"
由于使用[[
(DOTALL)
]]
和(?s)
之间的多行句子
答案 2 :(得分:0)
\\[\\[([^]]*)\\]\\]
可以作为@ anubhava答案的略微变化。正如这里的评论指出的那样,它不会抓住[[a]b]]
,但我无法判断这是否属于您的要求。