我面临的问题是我创建的当前正则表达式并不完全有效。如果我的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));
答案 0 :(得分:3)
用(?: |\z)
替换空格,它应该有效。
([\\pL]{2}=[\\pL\\pN\\pP]+(?: |\\z))+
(?: |\z)
是一个非捕获组,匹配输入的空格或结尾。
请注意,在[\\pL|\\pN|\\pP]
中,|
并不代表“或”。你可能想要[\\pL\\pN\\pP]
,这意味着任何一个字母,数字或标点字符。