【发布时间】:2010-12-17 12:12:37
【问题描述】:
我正在努力创建一个正则表达式匹配模式,以与 String 的 match() 方法一起使用。 我的字符串值类似于 -
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");
【问题讨论】:
-
你想匹配什么,即规则是什么?任何以“.xml”结尾的内容还是有更多内容?
-
我同意。在表达你的正则表达式之前,你应该知道你的字符串的正式定义。这将匹配:
\w+_\d+-\d+\.\w+\.\d\.\d\.xml。但这也是.*?\.xml。还有更多... -
您应该添加更多示例来说明您想要匹配的内容和不应该匹配的内容。
-
(dot)(.xml)转换为正则表达式\.\.xml,与..xml匹配。我很确定这不是你想要的。 -
糟糕,我的错误。你是对的。