如何将 java 中的模式与以下字符串的断言 J 匹配
How to match the patterns in java with assert J for below string
我有这样的字符串
String xyz ="JAVAxxxxxxxxxxxxxx ID: 123678 VERSION: 3"
我想知道如何验证它是否符合特定模式。
我是这样断言的
assertThat(xyz).containsPattern("[A-Za-z]* ID: [0-9]* VERSION: [0-9]* ");
我认为您正在寻找的方法是matches()
。此外,您的正则表达式与给定的字符串不匹配。该字符串在 'blocks' 之间包含多个空格。因此,您需要在正则表达式中指定:
assertThat(xyz).matches("[A-Za-z]* +ID: [0-9]* +VERSION: [0-9]*");
以 stevecross 的回答为基础,请注意建议的表达方式非常宽松。例如,它将匹配:
String xyz =" ID: VERSION: "
如果需要,您可以在匹配上更加严格。比如说,如果你需要确保非空白词,使用 + 而不是 * 像这样:
assertThat(xyz).matches("[A-Za-z]+ +ID: [0-9]+ +VERSION: [0-9]+");
并且如果您需要在键值对之间恰好有三个 space,则将 {3}
添加到仅包含 space 的 class 个字符中( [ ]
),像这样:
assertThat(xyz).matches("[A-Za-z]*[ ]{3}ID: [0-9]*[ ]{3}VERSION: [0-9]*");
我发现在线正则表达式评估器很有帮助。看这个例子:https://regex101.com/
我有这样的字符串
String xyz ="JAVAxxxxxxxxxxxxxx ID: 123678 VERSION: 3"
我想知道如何验证它是否符合特定模式。
我是这样断言的
assertThat(xyz).containsPattern("[A-Za-z]* ID: [0-9]* VERSION: [0-9]* ");
我认为您正在寻找的方法是matches()
。此外,您的正则表达式与给定的字符串不匹配。该字符串在 'blocks' 之间包含多个空格。因此,您需要在正则表达式中指定:
assertThat(xyz).matches("[A-Za-z]* +ID: [0-9]* +VERSION: [0-9]*");
以 stevecross 的回答为基础,请注意建议的表达方式非常宽松。例如,它将匹配:
String xyz =" ID: VERSION: "
如果需要,您可以在匹配上更加严格。比如说,如果你需要确保非空白词,使用 + 而不是 * 像这样:
assertThat(xyz).matches("[A-Za-z]+ +ID: [0-9]+ +VERSION: [0-9]+");
并且如果您需要在键值对之间恰好有三个 space,则将 {3}
添加到仅包含 space 的 class 个字符中( [ ]
),像这样:
assertThat(xyz).matches("[A-Za-z]*[ ]{3}ID: [0-9]*[ ]{3}VERSION: [0-9]*");
我发现在线正则表达式评估器很有帮助。看这个例子:https://regex101.com/