【发布时间】:2018-09-05 22:36:55
【问题描述】:
我正在尝试用 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 实现。
【问题讨论】:
-
.只匹配一个字符。 -
我只想要一个左括号(因此我尝试使用 .(
-
我对正则表达式完全陌生,并试图通过避免编写自己的逻辑来验证这个表达式来探索它
-
你应该首先使用类似 regex101.com 的东西。它不支持 Java 风格,但例如Python 正则表达式非常相似。
-
当然。我会试试的。谢谢
标签: java regex pattern-matching