我正在尝试在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
的{{1}}
答案 0 :(得分:6)
您的正则表达式中不需要.
(匹配一个字符)。从您的正则表达式中删除.
,使其变为"\\([a-zA-Z0-9]+,[a-zA-Z0-9]+\\)"
,它应该可以工作。
答案 1 :(得分:3)
使用此正则表达式:
String pattern = "^\\(.+,.+\\)";
这将与您所需的字符串匹配。
答案 2 :(得分:2)
在模式的第二部分,您有"[a-zA-Z0-9]+."
如果您尝试匹配"t"
,则t
部分将看到[a-zA-Z0-9]+
,但是之后需要另一个字符才能匹配.
部分。
修改后的模式:"\\([a-zA-Z0-9]+,[a-zA-Z0-9]+\\)"
答案 3 :(得分:2)
删除第二组[a-zA-Z0-9]之后的点
答案 4 :(得分:2)
更简单的是,您可以使用\ w代替单词,可以使用[a-zA-Z0-9]代替
所以您的正则表达式就是这样
\(\w+,\w+\)
答案 5 :(得分:2)
在您的正则表达式'。'中。在后一部分中不需要。 更改为“ \([a-zA-Z0-9] +,[a-zA-Z0-9] + \)”,这样它将对“(test,t)”返回true
String pattern = "\\([a-zA-Z0-9]+,[a-zA-Z0-9]+\\)";
String test = "(te,t)";
System.out.println(test.matches(pattern)); // true
答案 6 :(得分:2)
String pattern = "\\([a-zA-Z0-9]+,[a-zA-Z0-9]+\\)";
String test = "(test1,test2)";
String t1 = "(t,test2)";
String t2="(test2,t)";
System.out.println(test.matches(pattern));
System.out.println(t1.matches(pattern));
System.out.println(t2.matches(pattern));
只需尝试以下代码,它就会为您提供所需的答案。
您写了“。”在模式中+之后的末尾,请清除它。