gpt4 book ai didi

java - 检查字符串的格式

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

我需要构建一个方法来检查字符串是否具有以下格式:

[{...},{...},...,{...}]

但我不确定最好/更简单的方法是什么。我应该迭代字符串还是可以使用 Pattern/Matcher 类?

一些建议或开始的代码将不胜感激。

编辑

问题是字符串可能以错误的格式出现,因此该方法可能会返回错误...接下来,我将展示一些示例,说明可能出现的内容以及应该返回的内容:

[{...},{...},{...}] --> 返回有效;

[{...},{...}] --> 返回有效;

[{...},{...},{...},{...}] --> 返回有效;

[...},{...},{...},{...}] --> 返回错误;

[{...},{...}{...}] --> 返回错误;

[{...},{...},{...},{...} --> 返回错误;

[{...,{...},{...},{...}] --> 返回错误;

[{...},{...},,{...}] --> 返回错误;

[asd{...},{...},{...},{...}] --> 返回错误;

最佳答案

EDITED 以反射(reflect)表示不包含“[”、“]”或“{”的任意字符串的点

String regex = "\\[\\{[^\\[\\]{]*}(,\\{[^\\[\\]{]*})*]";

如果这看起来令人畏惧,则可能更多是由于 Java 字符串字符转义而不是正则表达式本身。如果没有所有转义(必需),它看起来像:

\[\{[^\[\]{]*}(,\{[^\[\]{]*})*]

并通过空格分隔逻辑分组来进一步澄清:

\[   \{[^\[\]{]*}   (,\{[^\[\]{]*})*   ]

第一个和最后一个字符是开头/结尾“[”和“]”的字面匹配。第二个字符表示所需的开头文字“{”,后面跟着一个字符类表达式,表示除“[”、“]”或“{”之外的任意(零个或多个)字符数,最后跟随源字符串中第一个花括号分组的结束文字“}”。

但是之后可能有额外的花括号分组,因此带括号的表达式会重复第一个表达式并在前面加上逗号,并且整个表达式可能会重复零次或多次。

因此,如果这使其更易于阅读或维护,您可以用代码表达如下:

String subgrp = "\\{[^\\[\\]{]*}";
String optionalRepeatSubgrp = "(," + subgrp + ")*";

String regex = "\\[" + subgrp + optionalRepeatSubgrp + "]";

关于java - 检查字符串的格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15094849/

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