我有一个包含多行内容的String,并希望选择一个多行区域,最好使用正则表达式(因为我现在正试图理解Java RegEx).
考虑输入如下:
Line 1
abc START def
Line 2
Line 3
gh END jklm
Line 4
Run Code Online (Sandbox Code Playgroud)
假设START并且END是区域的唯一和开始/结束标记,我想创建一个模式/匹配器来获得结果:
def
Line 2
Line 3
gh
Run Code Online (Sandbox Code Playgroud)
我目前的尝试是
Pattern p = Pattern.compile("START(.*)END");
Matcher m = p.matcher(input);
if (m.find())
System.out.println(m.group(1));
Run Code Online (Sandbox Code Playgroud)
但结果是
gh
Run Code Online (Sandbox Code Playgroud)
所以m.start()似乎指向包含'结束标记'的行的开头.我试图添加Pattern.MULTILINE到编译调用但是(单独)没有改变任何东西.
我的错误在哪里?
你想要Pattern.DOTALL,所以.匹配换行符. MULTILINE解决不同的问题,^和$锚.
Pattern p = Pattern.compile("START(.*)END", Pattern.DOTALL);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
400 次 |
| 最近记录: |