【问题标题】:Grep a specific part of a line [closed]Grep 一行的特定部分[关闭]
【发布时间】:2021-03-29 07:53:41
【问题描述】:

我有这样一行:

[Something-26543] Done some quite heavy job here.

如果有一种方法可以仅对方括号之间的行进行 grep,有人可以提出建议。 之前:

[Something-26543] Done some quite heavy job here.

过滤后:

Something-26543

【问题讨论】:

  • 请添加您尝试过的代码以及失败的原因(例如错误、堆栈跟踪、日志等),以便我们对其进行改进。
  • 我没有添加代码,因为问题是“如何做到”。这些问题是否被禁止?
  • 这能回答你的问题吗? Finding words within a string in Java

标签: java groovy devops


【解决方案1】:

最简单的方法是使用正则表达式。 在java中它应该是这样的。 matcher.group(1) 应该是你要找的。 此代码未经测试,要了解有关正则表达式的更多信息,我使用此站点:https://regex101.com/

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Example {
    public static void main(String[] args) {
        final String regex = "\\[(.*?)\\]";
        final String string = "[Something-26543] Done some quite heavy job here.";
        
        final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE);
        final Matcher matcher = pattern.matcher(string);
        
        while (matcher.find()) {
            System.out.println("Full match: " + matcher.group(0));
            
            for (int i = 1; i <= matcher.groupCount(); i++) {
                System.out.println("Group " + i + ": " + matcher.group(i));
            }
        }
    }
}

【讨论】:

  • regex101.com 最适合这个
  • 但请注意,regex101 并不是 100% 与 Java 相同的引擎(我更喜欢 regexplanet.com)
猜你喜欢
  • 2020-04-27
  • 1970-01-01
  • 2023-03-27
  • 1970-01-01
  • 2012-12-16
  • 1970-01-01
  • 2014-11-30
  • 1970-01-01
相关资源
最近更新 更多