首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >找不到多行字符串的REGEX匹配

找不到多行字符串的REGEX匹配
EN

Stack Overflow用户
提问于 2017-11-02 23:29:20
回答 1查看 122关注 0票数 1

我正在尝试创建正则表达式来搜索字符串,以寻找多行模式。字符串的一个示例是:

代码语言:javascript
复制
!
map-class frame-relay TempMap_1
 frame-relay cir 1536000
 frame-relay bc 15360
 frame-relay mincir 281000
 frame-relay adaptive-shaping becn
 service-policy output AB_TEMP_F1536K_0-256K-384K-128K_18
logging trap debugging
logging source-interface Loopback1
logging 136.91.111.21

我试图提取的匹配字符串是

代码语言:javascript
复制
map-class frame-relay TempMap_1
 frame-relay cir 1536000
 frame-relay bc 15360
 frame-relay mincir 281000
 frame-relay adaptive-shaping becn
 service-policy output AB_TEMP_F1536K_0-256K-384K-128K_18

我的模式

代码语言:javascript
复制
map-class frame-relay TempMap_1[]*

Pattern pattern = Pattern.compile("map-class frame-relay TempMap_1[]*", Pattern.DOTALL);

我不太确定如何使正则表达式工作。我使用Java和Pattern.DOTALL来匹配字符串。任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-03 00:16:12

使用Java 8,您可以利用此处的缩进并使用

代码语言:javascript
复制
String regex = "map-class frame-relay TempMap_1.*(?:\\R\\h+.*)*";

regex演示。不要使用,而不是,在这种模式下使用Pattern.DOTALL

详细信息

  • map-class frame-relay TempMap_1 -一个文字子字符串
  • .* -行的其余部分
  • (?:\\R\\h+.*)* - 0+连续序列:
    • \\R -一个断行序列(在Java7中,使用(?:\r\n?|\n)就足够了)
    • \\h+ - 1+水平空白空间(在Java7中,使用[^\\S\r\n]+)
    • .* -剩下的部分。

Java演示

代码语言:javascript
复制
String s = "!\nmap-class frame-relay TempMap_1\n frame-relay cir 1536000\n frame-relay bc 15360\n frame-relay mincir 281000\n frame-relay adaptive-shaping becn\n service-policy output AB_TEMP_F1536K_0-256K-384K-128K_18\nlogging trap debugging\nlogging source-interface Loopback1\nlogging 136.91.111.21";
Pattern p = Pattern.compile("map-class frame-relay TempMap_1.*(?:\\R\\h+.*)*");
Matcher m = p.matcher(s);
List<String> res = new ArrayList<>();
while(m.find()) {
    res.add(m.group());
}
System.out.println(res);

输出:

代码语言:javascript
复制
[map-class frame-relay TempMap_1
 frame-relay cir 1536000
 frame-relay bc 15360
 frame-relay mincir 281000
 frame-relay adaptive-shaping becn
 service-policy output AB_TEMP_F1536K_0-256K-384K-128K_18]
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47086196

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档