我正在使用这个正则表达式来捕获"PO Box"字符串.当我在线测试时,这似乎有效,但下面的javacode打印为false.我犯了什么错误?
/^\s*((P(OST)?.?\s*(O(FF(ICE)?)?)?.?\s+(B(IN|OX))?)|B(IN|OX) )/一世
要测试的字符串 - 邮政信箱1234
String spattern = "/^\\s*((P(OST)?.?\\s*(O(FF(ICE)?)?)?.?\\s+(B(IN|OX))?)|B(IN|OX))/i";
String regex = "PO Box 1234";
Pattern pattern = Pattern.compile(spattern);
System.out.println(pattern.matcher(regex).matches());
Run Code Online (Sandbox Code Playgroud)
我已经在http://regex101.com/上在线测试了这个表达式,它说测试字符串是匹配的
像这样改变你的模式:
String spattern = "(?i)^\\s*((P(OST)?.?\\s*(O(FF(ICE)?)?)?.?\\s+(B(IN|OX))?)|B(IN|OX))";
Run Code Online (Sandbox Code Playgroud)
如果您知道自己不会经常使用您的模式,则可以尝试以下操作:
String myInput = ....
if (myInput.matches(spattern)) {
// myInput is a PO BOX ...
} else {
// myInput isn't a PO BOX ...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6042 次 |
| 最近记录: |