Java与Python正则表达式
我编写了一个正则表达式来匹配范围为0-255的字符串 我的正则表达式是Java与Python正则表达式,java,python,regex,Java,Python,Regex,我编写了一个正则表达式来匹配范围为0-255的字符串 我的正则表达式是([0-9]|[1-9][0-9]| 1[0-9][0-9]| 2[0-4][0-9]| 25[0-5]) 我知道我的正则表达式在技术上是不正确的,因为在匹配字符串的第一个字符[0-9] 所以即使是“1234”也会匹配 现在我用python编写它 a="2514" >>> if(re.match("([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])",a)):
([0-9]|[1-9][0-9]| 1[0-9][0-9]| 2[0-4][0-9]| 25[0-5])
我知道我的正则表达式在技术上是不正确的,因为在匹配字符串的第一个字符[0-9]
所以即使是“1234”也会匹配
现在我用python编写它
a="2514"
>>> if(re.match("([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])",a)):
... print("yes")
输出=是
但是当我用java写的时候
String s="2514";
if(s.matches("([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])"))
{
System.out.println("yes");
}
输出为零,来自:
尝试根据图案匹配整个区域
这类似于
find()
类似于Pythonsmatch()
:
尝试查找与模式匹配的输入序列的下一个子序列
因为您必须阅读文档并使用函数中对应的方法,而不是名称。开始使用Python时我也遇到了同样的问题,但现在我忘记了Java方法名。添加了^和$来定义开头和结尾必须是什么,这不会有什么不同。python代码会问这样一个问题:“给定正则表达式,此输入中是否存在匹配项”。您的java代码会问“匹配此输入my regex?”的问题,因此您的示例会问不同的问题,因此验证是不同的。(相当于“包含输入特定字符串”与“如果我们只是字符串搜索而不是正则表达式搜索,则输入等于特定字符串)
匹配
在Java中需要完整的字符串匹配,而Python中的re.match
仅在字符串的开头锚定匹配。您正在查找fullmatch
,我think@MadPhysicist是的,我想你是对的。我实际上是从Java的角度回答这个问题,指出匹配
~查找
,而不是匹配
。然而,重读这个问题,我意识到OP可能在寻找进行匹配的python方法。我会澄清的。