gpt4 book ai didi

java - 正则表达式验证配置

转载 作者:行者123 更新时间:2023-12-02 10:50:58 25 4
gpt4 key购买 nike

我正在尝试用 Java 编写正则表达式来评估 Spring 配置文件中定义的配置。

配置看起来像

myConfig: (abc123, abcd-123*) | (abc123, xyz-124-321) | (abc111, *)

上面配置中的*是说它可以有任何东西。

我在 ( ) 中提到了一对配置参数,它们由 | 分隔。仅当需要定义多个对时才使用管道 (|):( ) | ().

它应该至少定义一对。类似下面的内容

myConfig: (abc123, abcd-123*)

我尝试使用以下代码来验证(abc123, abcd-123)。如果这有效,那么我可以继续使用复杂的正则表达式来匹配第一个示例。

String regPattern = "^.([a-zA-Z0-9].,[a-zA-Z0-9].)";
String test = "(123,inteasd)";
System.out.println(test.matches(regPattern));

但它没有按预期工作。请让我知道如何修复上述问题,我计划通过使用 | 拆分字符串表达式来使用此模式匹配每个字符串表达式来验证第一个示例。

我可以通过解析字符串并验证 java 中的预期格式来轻松完成此操作,而无需使用正则表达式。但我想尝试正则表达式,看看这是否可以用 java regex 实现。

最佳答案

您必须与 Pattern 合作文档。至少,您应该转义 ()。在您的 "(123,inteasd)" 示例中,您可以使用

"\\([a-zA-Z0-9]+,[a-zA-Z0-9]+\\)"

这意味着 ( 后跟 1 个或多个任何 a-zA-Z0-9,后跟 , 接下来是...

接下来,(abc123, abcd-123*) 可以类似地匹配

"\\([a-zA-Z0-9]+, [a-zA-Z0-9-]+.\\)"

其中 * 表示的“任何内容”与 . 匹配。此外,该对的第二个条目现在允许使用连字符。目前尚不清楚这些组的确切结构是什么(是[a-zA-z]-[0-9]还是可能的任何组合?),所以这是一般性的。

复杂的(abc123, abcd-123*) | (abc123,xyz-124-321)| (abc111, *) 的情况又很棘手,因为不清楚真正的限制是什么,但如果每对的第二个条目是 [a-zA-Z0-9-] 的任意组合 后跟任何内容 (*),然后尝试

"(\\([a-zA-Z0-9]+, [a-zA-Z0-9-]*.\\)(( \\| )|$))+"

这意味着,分解它:

  1. 一对:一个或多个 a-zA-Z0-9 后跟 后跟零个或多个 a-zA-Z0- 9- 后跟任何内容 (.)。它们被 () 包围。

  2. 一对可以跟在 | (需要转义 | 因为它意味着逻辑 OR)或行尾($ )。

  3. 以上所有内容都存在一次或多次。

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

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