Java字符串将错误与正则表达式匹配

Java字符串将错误与正则表达式匹配,java,regex,string,selenium-webdriver,Java,Regex,String,Selenium Webdriver,我必须拆分一个字符串,如果它的格式如下 String test="City: East Khasi Hills"; 有时我可能会得到String test=“City:” 如果在“:”之后有任何单词,我想匹配模式 我正在使用 String city=test.matches(":(.*)")?test.split(":")[1].trim():""; 但是我的正则表达式返回false。厌倦了我用来测试字符串的调试方式 我在工具中找到了一个匹配项。但是java返回的结果是false。您实际上不

我必须拆分一个字符串,如果它的格式如下

String test="City: East Khasi Hills";
有时我可能会得到
String test=“City:”

如果在“:”之后有任何单词,我想匹配模式

我正在使用

String city=test.matches(":(.*)")?test.split(":")[1].trim():"";
但是我的正则表达式返回false。厌倦了我用来测试字符串的调试方式


我在工具中找到了一个匹配项。但是java返回的结果是false。

您实际上不需要同时使用匹配项和拆分。只需像这样使用
split

String[] arr = "City: East Khasi Hills".split("\\s*:\\s*");
String city = arr.length==2 ? arr[1] : "";
//=> "East Khasi Hills"
String str = "City: East Khasi Hills";
// Test if your pattern matches
if (str.matches("(\\w)+:(\\s(\\w)+)*")) {
    // Split your string
    String[] split = str.split(":");
    // Get the information you need
    System.out.println("Attribute name: "  + split[0]);
    System.out.println("Attribute value: " + split[1].trim());
}

首先,我认为您需要检查您的总体模式是否符合预期。因此,您可以尝试以下方法:

String[] arr = "City: East Khasi Hills".split("\\s*:\\s*");
String city = arr.length==2 ? arr[1] : "";
//=> "East Khasi Hills"
String str = "City: East Khasi Hills";
// Test if your pattern matches
if (str.matches("(\\w)+:(\\s(\\w)+)*")) {
    // Split your string
    String[] split = str.split(":");
    // Get the information you need
    System.out.println("Attribute name: "  + split[0]);
    System.out.println("Attribute value: " + split[1].trim());
}

不要将Regex101用于Java。它不支持正则表达式的Java风格。改为使用测试。另外,首先如何拆分
字符串,以及为什么?我需要在“:”之后获得单词,如果有其他单词为空字符串,则此答案仍然有效,方法是在
arr[1]
中的
之后为您提供文本,说明哪些输入不起作用,以及您的预期结果是什么?如果我有类似“city:”,在这种情况下,拆分将不起作用拆分肯定会起作用,并且在
arr[1]
中会得到一个空值。再一次问一下,你对这个输入的预期结果是什么?让我们来看看。我的问题是,如果不符合模式,不管怎样,它都会得到解决。谢谢你的时间@Fernando