Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将字符串的内容与模式匹配_Java_Regex_String - Fatal编程技术网

Java 将字符串的内容与模式匹配

Java 将字符串的内容与模式匹配,java,regex,string,Java,Regex,String,我正在努力创建一个正则表达式匹配模式,用于字符串的matches()方法。 我的字符串值类似于- 3012145A_20348409-146139460.ABCDxyzPQr.1.1.xml 我使用的是String.matches(“regex”)方法,但老实说,我很难创建与字符串值匹配的模式。 我确实尝试了一些不同的组合,但都没有成功。在互联网上搜索一些例子。 虽然长度可能不同,但值的格式总是相似的 非常感谢您的帮助 只需匹配.xml就可以了 好的,除了给出的例子之外,列表中还有其他值,所

我正在努力创建一个正则表达式匹配模式,用于字符串的matches()方法。 我的字符串值类似于-

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
。我很确定那不是你想要的。哦,我错了。你是对的。我认为
(\\)?\\.
之所以存在是因为你的规范中有一个错误。有关详细信息,请参阅我在问题下的评论。如果我不包括(\\。)