【问题标题】:extract line that begin with a given pattern in java在java中提取以给定模式开头的行
【发布时间】:2016-02-02 13:57:40
【问题描述】:

我有一个多行文本,我只想提取以给定模式开头的整行。例如,我有这个文本块

v=0
o=Z 0 0 IN IP4 127.0.0.1
s=Z
c=IN IP4 127.0.0.1
t=0 0
m=audio 8000 RTP/AVP 3 110 8 0 98 101
a=rtpmap:110 speex/8000
a=rtpmap:98 iLBC/8000
a=fmtp:98 mode=20
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-15
a=sendrecv

我想通过使用模式前缀 c=IN 来提取以下行:c=IN IP4 127.0.0.1

有可能吗?

【问题讨论】:

  • 一切皆有可能。你只需要编码它。你编码了什么?
  • 尝试一下。如果它有效,那就太好了。如果它不起作用,请发布代码,我们会尽力提供帮助。
  • 愚蠢的家伙pff。去睡觉

标签: java regex pattern-matching


【解决方案1】:

是的,您可以使用模式c=IN.* 来实现,其中.* 是直到行尾的所有字符,Matcher 就像:

String ttt = "v=0\n" +
                "o=Z 0 0 IN IP4 127.0.0.1\n" +
                "s=Z\n" +
                "c=IN IP4 127.0.0.1\n" +
                "t=0 0\n" +
                "m=audio 8000 RTP/AVP 3 110 8 0 98 101\n" +
                "a=rtpmap:110 speex/8000\n" +
                "a=rtpmap:98 iLBC/8000\n" +
                "a=fmtp:98 mode=20\n" +
                "a=rtpmap:101 telephone-event/8000\n" +
                "a=fmtp:101 0-15\n" +
                "a=sendrecv";

Pattern pattern = Pattern.compile("c=IN.*");
Matcher matcher = pattern.matcher(ttt);
if (matcher.find())
     System.out.println(matcher.group());

或者您可以将其按\n 拆分为行数组并遍历该数组,直到获得以c=IN 开头的行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-03-06
    • 2018-01-08
    • 1970-01-01
    • 2023-03-13
    • 2020-02-21
    • 2013-09-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多