gpt4 book ai didi

java - 字符串的第一个单词和最后一个单词的正则表达式用

转载 作者:行者123 更新时间:2023-11-29 04:52:30 25 4
gpt4 key购买 nike

我正在尝试为以下表达式获取正则表达式,但做不到:

  • 字符串有 4 个单词,用点 (.) 分隔。
  • 第一个词匹配给定的词(例如 HELLO)。
  • 第二个和第三个单词可以有除点本身 (.) 之外的任何字符。
  • 最后一个单词再次匹配给定的单词(例如 csv)。

所以:

  • HELLO.something.Somethi#gElse.csv 应该匹配。
  • something.HELLO.?.csv 不匹配。
  • HELLO.something...csv 不匹配。
  • HELLO.something.somethingelse.notcsv 不应该匹配

我可以用 split(.) 来做到这一点,然后检查单个单词,但我试图让它与 Regex 和 Pattern 类一起工作。

非常感谢任何帮助。

最佳答案

这相对简单,只要您了解字符类。带有方括号 [xyz] 的正则表达式匹配列表 {x, y, z} 中的任何字符;正则表达式 [^xyz] 匹配任何字符 except {x, y, z}

现在你可以构造你的表达式了:

^HELLO\.[^.]+\.[^.]+\.csv$

+ 表示“一个或多个前面的表达式”; \. 表示“点本身”。 ^ 表示“字符串的开头”; $ 表示“字符串的结尾”。这些 anchor 阻止正则表达式匹配

blahblahHELLO.world.world.csvblahblah

Demo.

编写这样的正则表达式的一个共同目标是捕获一些内容,例如,第一个和第二个点之间的字符串,以及第二个和第三个点之间的字符串。使用捕获组将这些字符串的内容带入您的 Java 程序:

^HELLO\.([^.]+)\.([^.]+)\.csv$

每对括号定义一个捕获组,从 1 开始索引(索引为零的组代表整个表达式的捕获)。从模式中获得匹配对象后,您可以查询它的组,并提取相应的字符串。

请注意,Java 正则表达式中的反斜杠需要加倍。

关于java - 字符串的第一个单词和最后一个单词的正则表达式用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34901946/

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