Java正则表达式仅匹配双方括号中的单词
我正在尝试这样做: 我有这种文本(即文件):Java正则表达式仅匹配双方括号中的单词,java,regex,Java,Regex,我正在尝试这样做: 我有这种文本(即文件): [[dadasd sadasd sdsd ad asddd][[dasdsd]]dsd[[dsdas]]。。。[[dd ssas dd]] 我只想要两个方括号之间的句子。我如何用java解决这个问题 //This one is not working: String patternStr = "(.*)\\[\\[(.*)\\]\\](.*)"; Pattern pattern = Pattern.compile(patter
[[dadasd sadasd sdsd ad asddd][[dasdsd]]dsd[[dsdas]]。。。[[dd ssas dd]]
我只想要两个方括号之间的句子。我如何用java解决这个问题
//This one is not working:
String patternStr = "(.*)\\[\\[(.*)\\]\\](.*)";
Pattern pattern = Pattern.compile(patternStr);
Matcher matcher = pattern.matcher("");
// Set the input
matcher.reset("[[sdasd]] ddd [[ddssssssssssss]] vvvddd [[dd]] asdasda [[asdsa]] ");
...
提前感谢您需要以下正则表达式:
\[\[(.+?)\]\]
然后将其转换为Java字符串,如下所示:
\\[\\[(.+?)\\]\\]
PowerShell测试:
PS Home:\> [regex]::Matches("[[sdasd]] ddd [[ddssssssssssss]] vvvddd [[dd]] asdasda [[asdsa]] ", '\[\[(.+?)\]\]') | ft -auto
Groups Success Captures Index Length Value
------ ------- -------- ----- ------ -----
{[[sdasd]], sdasd} True {[[sdasd]]} 0 9 [[sdasd]]
{[[ddssssssssssss]], ddssssssssssss} True {[[ddssssssssssss]]} 14 18 [[ddssssssssssss]]
{[[dd]], dd} True {[[dd]]} 40 6 [[dd]]
{[[asdsa]], asdsa} True {[[asdsa]]} 55 9 [[asdsa]]
您只需修改正则表达式:
\[\[(.*?\]\]\]
或此正则表达式:\[\[([^\[\]*)\]\]\]
因此,结果句属于第1组
结果:
或者使用此正则表达式:
(?您可以执行以下操作:
Pattern pattern = Pattern.compile("\\[+(.*?)\\]+");
Matcher matcher = pattern.matcher("[[sdasd]] ddd [[ddssssssssssss]] vvvddd [[dd]] asdasda [[asdsa]] ");
while(matcher.find()) {
System.out.println(matcher.group(1));
}
它将输出:
sdasd
ddssssssssssss
dd
asdsa
蒂姆:考虑到他们发布的示例,我现在把它拿出来了。如果他们预期不同的输入,那么他们应该这么说。String patternStr=“\[\[^\]+\]\]\]”Pattern Pattern=Pattern.compile(patternStr);Matcher Matcher=Pattern.Matcher(“”;//设置输入Matcher.reset(“[[sdasd]]ddd[[ddssss ssssss]]vvddddddd[[dd]]asdasda[[asdsa]]”;boolean matchfind=matcher.find();if(matchfind){…只有第一个,groups.count=0…:SThanks!这正是我要找的。它在这里对我有用:它什么都不匹配…我只需要得到双方括号之间的字符…输入:[[dsdasðd]]asjdiajd[[ððð]输出:dsdasðd,ðð