gpt4 book ai didi

java - 多个正则表达式

转载 作者:行者123 更新时间:2023-12-01 07:37:01 25 4
gpt4 key购买 nike

我不习惯它们,并且在 java 语法“匹配”方面遇到麻烦。

我有两个文件,一个是 111.123.399.555.xml,另一个是 Conf.xml。

现在我只想获取第一个包含正则表达式的文件。

string.matches("[1-9[xml[.]]]");

不起作用。

如何做到这一点?

最佳答案

使用 string.matches("[1-9[xml[.]]]"); 将不起作用,因为 [] 将创建一个字符类组,而不是捕获组。

这意味着,对于java来说,你的表达式是在说“匹配以下任意一个:[1-to-9 [或x,或m,或l [或*any*]]]” (*any* 这里是因为您没有转义 .,因此,它将创建 匹配任何字符 命令)

<小时/>

重要:

“\”被java识别为文字转义字符,并且为了将其作为实际匹配器的转义字符(也是“\”,但以字符串形式)发送到匹配器,它本身需要转义,因此,当您打算在匹配器上使用“\”时,实际上必须使用“\\”。

当您不习惯时,这有点令人困惑,但总而言之,要将实际的“\”进行匹配发送给匹配器,您可能必须使用“\\\\”!第一个“\\”对于匹配器来说将变成“\”,因此是一个转义字符,而第二个“\\”,由第一个“\\”转义,将成为实际的“\”字符串!

<小时/>

###.###.###.###.xml 模式匹配的正确模式字符串是 ,其中“#”始终是数字string.matches("(\\d{3}\\.){4}xml"),其工作原理如下:

  • \\d = 将匹配单个数字字符。它是一样的使用[0-9],更简单。
  • {3} 指定前一个匹配“正好 3 次”\\d。因此匹配###
  • \\. 匹配单个点字符。
  • 包含前面代码的 () 表示“这是一个捕获组”到匹配器。它由下一个 {4} 使用,从而创建“匹配整个 ###. 组正好 4 次”,从而创建“匹配 ###.###.###.###.”。<
  • 最后,模式字符串结束之前的 xml 将匹配完全匹配“xml”,与前面的项目一起,与该模式完全匹配:“###.###.###.###.xml”。

如需进一步学习,请阅读 Java's Pattern docs.

关于java - 多个正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10497718/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com