Java正则表达式/空格问题
尝试匹配“TRA”、“tr A”、“tr A”等对于第一种情况很好,没有空格,但对于任何有空格的情况都不行(只是忽略)。不知道我做错了什么 编辑 本质上,我试图匹配TRA的所有出现,无论每个字母(或出现)之间是否有任意数量的空格 例如:“trattra”有4次出现,我想用一个正则表达式来匹配它们。您应该使用:Java正则表达式/空格问题,java,regex,Java,Regex,尝试匹配“TRA”、“tr A”、“tr A”等对于第一种情况很好,没有空格,但对于任何有空格的情况都不行(只是忽略)。不知道我做错了什么 编辑 本质上,我试图匹配TRA的所有出现,无论每个字母(或出现)之间是否有任意数量的空格 例如:“trattra”有4次出现,我想用一个正则表达式来匹配它们。您应该使用: String regex = "(\\s*T\\s*R\\s*A\\s*)*"; Pattern p = Pattern.compile(regex); 而不是: String rege
String regex = "(\\s*T\\s*R\\s*A\\s*)*";
Pattern p = Pattern.compile(regex);
而不是:
String regex = "(\\s*T\\s*R\\s*A\\s*)";
您的正则表达式正在尝试匹配给定文本的0个或多个匹配项,根据您的问题,您只需尝试匹配一次即可
更新:要匹配多个事件,请使用以下代码:
String regex = "(\\s*T\\s*R\\s*A\\s*)*";
对于您的目标,正确的正则表达式应该是
(\\s*T\\s*R\\s*A\\s*)+
,因为它要求至少出现一次TRA group,并且不会匹配空字符串
例如:
String regex = "(\\s*T\\s*R\\s*A\\s*)";
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher("T R A T R A T R A");
while (m.find())
System.out.printf("name=[%s]%n", m.group(1));
输出:
String regex = "(\\s*T\\s*R\\s*A\\s*)+";
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher("S T R A T R A T R A N G E");
if (m.find()) {
System.out.println(m.group());
} else {
System.out.println("No match");
}
这对我很有用:
T R A T R A T R A
事实上,我也在试着匹配“特拉特拉特拉”,“特拉特拉特拉特拉特拉”,等等。基本上,我需要匹配所有出现的TRA,任意数量的空格与否。很抱歉,我忘了提到这一点。使用+(一个或多个)的结果相同。不确定是什么问题。@nixpunk你的代码到底是什么?对我来说,它工作正常(参见示例)更多详细信息,请参见我下面的示例。您的示例在第一个
TRA
之后有双T
字母,是否有意?
String regex = "(\\s*T\\s*R\\s*A\\s*)";