首页 > 解决方案 > 正则表达式不适用于单个字符

问题描述

我正在尝试编写正则表达式Java来评估用 () 分隔的两个字符串,

Example: (test1,test2)

我写了下面的代码

public static void main(String[] a){
    String pattern = "\\([a-zA-Z0-9]+,[a-zA-Z0-9]+.\\)";
    String test = "(test1,test2)";
    System.out.println(test.matches(pattern));
}

true它按预期工作并在以下情况下打印

String test = "(test1,test2)";

String test = "(t,test2)";

但是false当我在下面发送时它正在打印

String test = "(test1,t)";

这很奇怪,因为我在之前和之后使用相同的表达式,

它返回true(t,test2)不返回(test1,t)

请让我知道我在这个正则表达式中缺少什么。true我需要它来评估并返回(test1,t)

标签: javaregex

解决方案


正则表达式中不需要.(匹配一个字符)。从您的正则表达式中删除.,使其变为"\\([a-zA-Z0-9]+,[a-zA-Z0-9]+\\)"并且它应该可以工作。


推荐阅读