java 只匹配括号_Java正则表达式只匹配双方括号中的单词

我正在尝试这样做:

我有这种文本(即文件):

[[dadasd sadasd sdsd ad asddd]] [[dasdsd]] dsdsd [[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]]

标签:java,regex

来源: https://codeday.me/bug/20190721/1495630.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值