使用正则表达式时,在字符串末尾消除尾随空格?

时间:2011-09-07 15:40:21

标签: java regex string

我面临的问题是我创建的当前正则表达式并不完全有效。如果我的String末尾没有空格,则失败。我的问题是有什么方法可以解决这个问题吗?

以下是问题的详细信息:

我需要一个正则表达式,以确保字符串符合以下格式,

“LL=xxxxxx LL=xxxxxxxxx LL=xxxxxxx”

L =信。 X =字母或数字或标点符号。

我最接近的正则表达式是,

([\\pL]{2}=[\\pL|\\pN|\\pP]+ )+

但是这个正则表达式不起作用,只有在String格式为:

时才有效
“LL=xxxxxx LL=xxxxxxxxx LL=xxxxxxx ”

以下是我用来检查的代码:

    final String regex1 = "([\\pL]{2}=[\\pL|\\pN|\\pP]+ )+"; 
    String x = "xx=xxxxxx xx=xxxxxxxxxm xx=xxxxxxx xx=xxxxxxx"; // This is what I need!
    String y = "xx=xxxxxx xx=xxxxxxxxxm xx=xxxxxxx xx=xxxxxxx "; // This works, no good
    System.out.println(x.matches(regex1));
    System.out.println(y.matches(regex1));

1 个答案:

答案 0 :(得分:3)

(?: |\z)替换空格,它应该有效。

([\\pL]{2}=[\\pL\\pN\\pP]+(?: |\\z))+

(?: |\z)是一个非捕获组,匹配输入的空格或结尾。

请注意,在[\\pL|\\pN|\\pP]中,|并不代表“或”。你可能想要[\\pL\\pN\\pP],这意味着任何一个字母,数字或标点字符。