gpt4 book ai didi

正则表达式匹配特定模式

转载 作者:行者123 更新时间:2023-12-02 09:18:29 25 4
gpt4 key购买 nike

绝对不是 Regex 方面的专家,所以我在这里有点挣扎。我想创建一个匹配以下格式的模式:

cat:hairy, rat:hairless               [correct]

cat:hairy, rat:hairless, dog:fat [correct]

cat:hairy, rat:hairless [correct]



cat [incorrect]

cat, dog [incorrect]

cat:hairy, [incorrect]

cat:hairy, monkey, dog:fat [incorrect]

cat:hairy rat:hairless, dog:fat [incorrect]

到目前为止,我的正则表达式如下:

((\S):(\S))

但是,这并不适用于所有情况。任何帮助将不胜感激!

更新语言:Java格式:xxx:yyy可以是任意字母或数字,大小写均可

最佳答案

您可以使用以下正则表达式:

^[a-zA-Z0-9]+:[a-zA-Z0-9]+(?:,\s+[a-zA-Z0-9]+:[a-zA-Z0-9]+)+$

参见 regex demo

详细信息:

  • ^ - 字符串的开始
  • [a-zA-Z0-9]+ - 1 个或多个字母数字字符
  • : - 冒号
  • [a-zA-Z0-9]+ - 1 个或多个字母数字字符
  • (?:,\s+[a-zA-Z0-9]+:[a-zA-Z0-9]+)+ - 1个或多个序列
    • , - 逗号
    • \s+ - 1 个或多个空格
    • [a-zA-Z0-9]+ - 1 个或多个字母数字字符
    • : - 冒号
    • [a-zA-Z0-9]+ - 1 个或多个字母数字字符
  • $ - 字符串结尾

根据正则表达式的风格和用途,[a-zA-Z0-9] 可能会替换为 [[:alnum:]](POSIX、Ruby、 PCRE) 或 \p{Alnum} (Java)。所以,在 Java 中,你会使用

.matches("\\p{Alnum}+:\\p{Alnum}+(?:,\\s+\\p{Alnum}+:\\p{Alnum}+)+")

请注意,不需要 ^$,因为 .matches() 默认锚定模式。

关于正则表达式匹配特定模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44760123/

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