提取以java中给定模式开头的行

时间:2015-11-02 16:00:50

标签: java regex pattern-matching

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

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

有可能吗?

1 个答案:

答案 0 :(得分:0)

是的,您可以使用模式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开头的那个。