在两个正则表达式匹配之间获取字符串

时间:2017-11-08 13:35:38

标签: java regex

我正在尝试为Java函数找到一个正则表达式字符串模式来处理推文。经过多次清理后,现在我的数据格式为:“tweet; device; tweet; device ...”

示例数据格式如下,

  

RT @ blah1:blahbla;有些device1 RT @ blah2:blabla;有些dev2 @ blah3:   blahblah;一些dev3

问题:

我希望迭代地在“RT @ blah1:”和“; some device”之间获取字符串。

提前多多感谢。

3 个答案:

答案 0 :(得分:0)

String类提供了许多操作字符串的方法。 在这种情况下,您可以使用split() - 方法: 分裂;然后拆分:

答案 1 :(得分:0)

public static void main(String[] args) {
    String s = "RT @blah1: blahbla;some device1 RT @blah2: blabla;some dev2 @blah3: blahblah;some dev3";

    for (String part : s.split(";")) {
        if (part.contains(":")) {
            System.out.println(part.split(":")[1]);
        }
    }
}

如果:和;不足以分裂你可以用split()替换它们的一些正则表达式。

答案 2 :(得分:0)

我同意上述答案的评论,即首先使用string.split()。

如果您坚持使用REGEX,请使用以下命令:

print "time : {}".format(timestamp)

示例:https://regex101.com/r/cOmKhU/1

说明:

  • (?:^ [^ @] + @ [^:] +:\ s) - >非捕获组,从行的开头开始,有超过1个非@,后跟@,多个非:和1个空格
  • ([^;] +) - >捕获Group,所有字符(除了:)直到下一个: