我需要查找java regex模式,它找到格式为1 = 1的输入字符串,其中“=”前缀应该具有相同的后缀数字。这里还有前缀&后缀值应该相同,如1 = 1,11 = 11,223 = 223。像1 = 2,3 = 22,33 = 22的值不应与模式
匹配我们是否可以采用一般模式来满足上述规则。
答案 0 :(得分:9)
使用后退参考:
(\d+)=\1\b
当然,在java中你需要转义反斜杠:
"(\\d+)=\\1\\b"
答案 1 :(得分:3)
您也可以在没有正则表达式的情况下进行检查。
String exp="lhs=rhs";
if(exp.split("=")[0].equals(exp.split("=")[1])){
System.out.println("true");
}else{
System.out.println("false");
}
答案 2 :(得分:1)
您可以使用capture groups and backreferences:
^(\\d+)=\\1$
[锚点是为了防止其他任何匹配]
也许更傻瓜式的表达方式是:
^\\s*(\\d+)\\s*=\\s*\\1\\s*$
这会忽略最终的空格,否则会导致事情无法正常工作。当然,这现在取决于你是否说,例如1 =1
是一个有效的输入字符串。
更通用的表达方式可能是:
^\\s*(.+?)\\s*=\\s*\\1\\s*$
您可以在等号前比较任何字符串。 .+?
匹配任何字符,直到等号。