正则表达式从java中的字符串中获取两个不同的单词

时间:2016-06-29 14:09:10

标签: java regex

我将获取字符串为app1(向下)和app2(向上) 括号中的文字表示应用程序的状态,它们可能会上升或下降,

现在我需要使用正则表达式来获取应用程序的状态,如逗号分隔字符串

ex:生病获取app1(UP)和app2(DOWN)  要求结果UP,DOWN

4 个答案:

答案 0 :(得分:2)

使用这样的RegEx很容易:

clearfix

Regular expression visualization

\\((.*?)\\)

输出:

  

UP,DOWN,

Java 8:使用String x = "app1(UP) and app2(DOWN)"; Matcher m = Pattern.compile("\\((.*?)\\)").matcher(x); String tmp = ""; while(m.find()) { tmp+=(m.group(1))+","; } System.out.println(tmp);

StringJoiner

输出:

  

UP,DOWN

(上次String x = "app1(UP) and app2(DOWN)"; Matcher m = Pattern.compile("\\((.*?)\\)").matcher(x); StringJoiner sj = new StringJoiner(","); while(m.find()) { sj.add((m.group(1))); } System.out.print(sj.toString()); 已删除)

答案 1 :(得分:0)

import java.util.ArrayList;
import java.util.List;
import java.util.regex.*;

public class ValidateDemo
{
        public static void main(String[] args)
        {
                String input = "ill get app1(UP) and app2(DOWN)";
                Pattern p = Pattern.compile("app[0-9]+\\(([A-Z]+)\\)");
                Matcher m = p.matcher(input);


                List<String> found = new ArrayList<String>();
                while (m.find())
                {
                        found.add(m.group(1));
                }

                System.out.println(found.toString());
        }
}

我的第一个java脚本,请怜悯

答案 2 :(得分:0)

考虑以下代码:

    private static final Pattern RX_MATCH_APP_STATUS = Pattern.compile("\\s*(?<name>[^(\\s]+)\\((?<status>[^(\\s]+)\\)");
    final String input = "app1(UP) or app2(down) let's have also app-3(DOWN)";
    final Matcher m = RX_MATCH_APP_STATUS.matcher(input);
    while (m.find()) {
        final String name = m.group("name");
        final String status = m.group("status");
        System.out.printf("%s:%s\n", name, status);
    }

这会从输入行中获取尽可能多的应用状态条目,因为它们确实存在,并将每个应用名称及其状态放入适当的变量中。它取决于你,你想如何处理它们(打印或其他)。

另外,如果有其他状态而不是UP和DOWN(如UNKNOWN),这会给你带来优势,这仍然有效。

减去,如果括号中的句子带有某个名称前缀,那实际上不是应用程序的名称,括号的内容不是应用程序状态。

答案 3 :(得分:-1)

将其用作正则表达式并在http://regexr.com/上进行测试 [UP] | [DOWN]