正则表达式以验证配置
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了正则表达式以验证配置相关的知识,希望对你有一定的参考价值。
我试图在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正则表达式实现。
您必须使用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-]*.\)(( \| )|$))+"
这意味着,打破它:
- 一对:一个或多个
a-zA-Z0-9
,然后是,
,然后是零或更多a-zA-Z0-9-
,然后是任何东西(.
)。周围环绕着(
和)
。 - 一对可以跟随
|
(需要逃脱|
,因为它意味着逻辑OR)或线的末端($
)。 - 以上所有都存在一次或多次。
以上是关于正则表达式以验证配置的主要内容,如果未能解决你的问题,请参考以下文章