如何从字符串中获取特定格式的所有子字符串

时间:2019-04-01 11:33:11

标签: regex string scala

我有一个大字符串,我想从中获取格式为[[someword]]的所有子字符串。
含义,获取所有用方括号括起来的单词(列表)。

现在,执行此操作的一种方法是按空格分隔字符串,然后使用此过滤器过滤列表,但问题是有时[[someword]]并不存在,可能有,,空格或{ {1}}就在它的前后。

做这个的最好方式是什么?

  

我会感谢Scala中的解决方案,但由于这更多是编程问题,如果您使用的是我知道的其他某种语言,例如,我会将您的解决方案转换为Scala。 Python。

     

此问题与带标记的重复项不同,因为正则表达式需要能够在方括号之间容纳除英语字符之外的其他字符。

2 个答案:

答案 0 :(得分:2)

您可以使用此(?<=\[{2})[^[\]]+(?=\]{2})正则表达式来匹配并提取双方括号中包含的所有所需单词。

这是Python解决方案,

import re

s = 'some text [[someword]] some [[some other word]]other text '
print(re.findall(r'(?<=\[{2})[^[\]]+(?=\]{2})', s))

打印

['someword', 'some other word']

我从没在Scala工作过,但是这是Java的解决方案,而且我知道Scala仅基于Java,因此这可能会有所帮助。

String s = "some text [[someword]] some [[some other word]]other text ";
Pattern p = Pattern.compile("(?<=\\[{2})[^\\[\\]]+(?=\\]{2})");
Matcher m = p.matcher(s);
while(m.find()) {
    System.out.println(m.group());
}

打印

someword
some other word

让我知道这是否是您想要的。

答案 1 :(得分:2)

Scala解决方案:

item1->setSizeHint(0, QSize(myWidth, myHeight) );
myLabel->resize(myWidth, myHeight);