Java 将字符串的内容与模式匹配
我正在努力创建一个正则表达式匹配模式,用于字符串的matches()方法。 我的字符串值类似于-Java 将字符串的内容与模式匹配,java,regex,string,Java,Regex,String,我正在努力创建一个正则表达式匹配模式,用于字符串的matches()方法。 我的字符串值类似于- 3012145A_20348409-146139460.ABCDxyzPQr.1.1.xml 我使用的是String.matches(“regex”)方法,但老实说,我很难创建与字符串值匹配的模式。 我确实尝试了一些不同的组合,但都没有成功。在互联网上搜索一些例子。 虽然长度可能不同,但值的格式总是相似的 非常感谢您的帮助 只需匹配.xml就可以了 好的,除了给出的例子之外,列表中还有其他值,所
3012145A_20348409-146139460.ABCDxyzPQr.1.1.xml
我使用的是String.matches(“regex”)方法,但老实说,我很难创建与字符串值匹配的模式。
我确实尝试了一些不同的组合,但都没有成功。在互联网上搜索一些例子。
虽然长度可能不同,但值的格式总是相似的
非常感谢您的帮助
只需匹配.xml就可以了
好的,除了给出的例子之外,列表中还有其他值,所以我需要匹配如下
3012145A_20348409-146139460.ABCDxyzPQr.1.1.xml
值列表可以如下所示:
3012145A_20348409-146139460.ABCDxyzPQr.1.1.xml
3012145_Error.xml
3012145_UK.pdf
3012145A_20348409.ABC.10.10.10.xml
我需要这些中的第一个值
(alphanum)(underscore)(num)(hyphen)(num)(dot)(aLpHa)(dot)(num)(dot)(num)(dot)(.xml)
我试过这个-
s.matches("[a-zA-Z0-9]_[0-9]-[0-9].[a-zA-Z].[0-9].[0-9].xml");
要求:
(alphanum)(下划线)(num)(连字符)(num)(dot)(aLpHa)(dot)(num)(dot)(num)(dot)(dot)(dot)(dot)(.xml)
假定正则表达式:
\w*\ud*-\d*\.([a-zA-Z])*\.\d*.\d*(\)?\.xml
在java中,这将转换为:
Pattern p=Pattern.compile(\\w*\\ud*-\\d*\.([a-zA-Z])*\.\\d*\.\\d*(\\)?\.xml),Pattern.不区分大小写代码>
注意
由于我使用的是[a-zA-Z]
,您可能不需要模式。不区分大小写
正则表达式出现问题:s.matches(“[a-zA-Z0-9].[0-9]-[0-9].[a-zA-Z].[0-9].[0-9].xml”)代码>
您正在查找alpha
、number
或alphanumeric
的单个实例。使用*
或+
元字符
希望对您有所帮助。要求:
(alphanum)(下划线)(num)(连字符)(num)(dot)(aLpHa)(dot)(num)(dot)(num)(dot)(dot)(dot)(dot)(.xml)
假定正则表达式:
\w*\ud*-\d*\.([a-zA-Z])*\.\d*.\d*(\)?\.xml
在java中,这将转换为:
Pattern p=Pattern.compile(\\w*\\ud*-\\d*\.([a-zA-Z])*\.\\d*\.\\d*(\\)?\.xml),Pattern.不区分大小写代码>
注意
由于我使用的是[a-zA-Z]
,您可能不需要模式。不区分大小写
正则表达式出现问题:s.matches(“[a-zA-Z0-9].[0-9]-[0-9].[a-zA-Z].[0-9].[0-9].xml”)代码>
您正在查找alpha
、number
或alphanumeric
的单个实例。使用*
或+
元字符
希望对你有所帮助。太棒了!。非常感谢法沃纽斯。
这非常有效。
因此,据我所知,我所做的是,即使我给出了一个范围[0-9a-zA-Z]
,它实际上只是试图匹配第一个字符,在我的示例中,3
因此,实际上,它不是在检查3012145A
,而是在检查3
是否属于我的给定范围([0-9a-zA-Z]
)等等,以检查整个字符串。
您的解决方案\w*
将检查该特定部分是字母数字还是\d*
将检查该部分(以边界为界,例如
或
)是否在整个数字和/或字母范围内
因此,匹配3012145A_
的一种非常模糊的方法可能是
[0-9][0-9][0-9][0-9][0-9][0-9][0-9][a-zA-Z]_
我提出这个解决方案并不是为了理解[0-9]
和\d*
之间的行为和区别
但是我仍然有一个问题,(\\\)?\\.
,它的目的是什么
再次非常感谢太棒了!。非常感谢法沃纽斯。
这非常有效。
因此,据我所知,我所做的是,即使我给出了一个范围[0-9a-zA-Z]
,它实际上只是试图匹配第一个字符,在我的示例中,3
因此,实际上,它不是在检查3012145A
,而是在检查3
是否属于我的给定范围([0-9a-zA-Z]
)等等,以检查整个字符串。
您的解决方案\w*
将检查该特定部分是字母数字还是\d*
将检查该部分(以边界为界,例如
或
)是否在整个数字和/或字母范围内
因此,匹配3012145A_
的一种非常模糊的方法可能是
[0-9][0-9][0-9][0-9][0-9][0-9][0-9][a-zA-Z]_
我提出这个解决方案并不是为了理解[0-9]
和\d*
之间的行为和区别
但是我仍然有一个问题,(\\\)?\\.
,它的目的是什么
再次非常感谢您想匹配什么,即规则是什么?任何以“.xml”结尾的东西,或者还有其他东西吗?我同意。在表达正则表达式之前,您应该了解字符串的正式定义。这将匹配:\w+\ud+-\d+\.\w+\.\d\.\d\.xml
。但这也是*?\.xml
。还有更多的东西……您应该再添加一些示例,说明您想要匹配的内容和不应该匹配的内容。(dot)(.xml)
转换为正则表达式\.\.xml
,它匹配.xml
。我很确定那不是你想要的。哦,我错了。你是对的。你想匹配什么,即规则是什么?任何以“.xml”结尾的东西,或者还有其他东西吗?我同意。在表达正则表达式之前,您应该了解字符串的正式定义。这将匹配:\w+\ud+-\d+\.\w+\.\d\.\d\.xml
。但这也是*?\.xml
。还有更多的东西……您应该再添加一些示例,说明您想要匹配的内容和不应该匹配的内容。(dot)(.xml)
转换为正则表达式\.\.xml
,它匹配.xml
。我很确定那不是你想要的。哦,我错了。你是对的。我认为(\\)?\\.
之所以存在是因为你的规范中有一个错误。有关详细信息,请参阅我在问题下的评论。如果我不包括(\\。)