如何将java中的模式与下面字符串的断言J匹配

Sne*_*kar 5 java selenium assert

我有一个这样的字符串

String xyz ="JAVAxxxxxxxxxxxxxx   ID: 123678   VERSION: 3"
Run Code Online (Sandbox Code Playgroud)

我想知道如何验证它是否符合特定模式。

我做这样的断言

assertThat(xyz).containsPattern("[A-Za-z]* ID: [0-9]* VERSION: [0-9]* ");
Run Code Online (Sandbox Code Playgroud)

小智 6

为了建立在 stevecross 的答案的基础上,请注意,建议的表达方式非常宽松。例如,它将匹配:

String xyz =" ID: VERSION: "
Run Code Online (Sandbox Code Playgroud)

如果需要的话,你可以更加严格地匹配。比如说,如果你需要确保非空白单词,请使用 + 而不是 *,如下所示:

assertThat(xyz).matches("[A-Za-z]+ +ID: [0-9]+ +VERSION: [0-9]+");
Run Code Online (Sandbox Code Playgroud)

如果您需要在键值对之间恰好有三个空格,则添加{3}到仅包含空格 ( ) 的字符类[ ],如下所示:

assertThat(xyz).matches("[A-Za-z]*[ ]{3}ID: [0-9]*[ ]{3}VERSION: [0-9]*");
Run Code Online (Sandbox Code Playgroud)

我发现在线正则表达式评估器很有帮助。例如,请参阅此: https: //regex101.com/