java - 代码的正则表达式

标签 java regex

我很难找到可以匹配这些字符串的正则表达式:

@OSMHO:6:75
@4F0SO:5:56
@40KIR:5:15
@VDXBC:4:13
@WYRRA:6:59
@A4AUN:1118:803

正如你们所看到的,这些字符串以“@”开头,后跟 5 个字母数字字符,然后是“:”,然后是一个数字,然后是另一个“:”,然后是另一个数字。 非常感谢您的帮助。

最佳答案

要匹配模式开头的 @,请使用 ^(行开头),后跟 @。因此,您的模式以^@ 开头。

字母数字表示 a-z、A-Z 和 0-9 中的任何字母。当您想要在正则表达式中表示“以下字符之一”时,语法是将字符集括在 [] 中。在本例中,它看起来像 [a-zA-Z0-9]。如果您想要其中五个,您可以在字符集后使用 {5}。您的表达式现在看起来像 ^@[a-zA-Z0-9]{5}

冒号只是冒号:。多位数字意味着您需要一位或多位数字。数字表示为[0-9](即:0 到 9 之间的数字之一)。 “一个或多个”用+表示。因此,要添加冒号、一位或多位数字、冒号和一位或多位数字,您需要添加 :[0-9]+:[0-9]+。您的模式现在如下所示:^@[a-zA-Z0-9]{5}:[0-9]+:[0-9]+

您还可以使用简写 \d 来表示“数字”,因此您也可以编写^@[a-zA-Z0-9]{5}:\d+ :\d+,尽管这可能很棘手,因为您可能需要额外的反斜杠,具体取决于您用来定义该表达式的引号类型。有时,最简单的方法是避免使用反斜杠的快捷方式,以使模式更易于理解,尤其是当您第一次学习如何使用正则表达式时。

如果您想捕获组中匹配的每个部分,可以使用括号。例如,您可以执行 ^@([a-zA-Z0-9]{5}):([0-9]+):([0-9]+) ,这将把一组中 @ 和第一个 : 之间的值,第二组中两个冒号之间的值,以及第三组中最后一个冒号之后的值。如果您只关心是否有匹配项而不是想要匹配项的每个单独部分,则可以省略括号。

如果您按照我刚才的方式构建一个模式(一次处理一个部分),则正则表达式会非常容易。

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

相关文章:

java - React Native Android 添加包时出错

JavaScript 正则表达式

java - 使用Object类实现数学运算的多态性

java - 如何在 POST 方法中传递 xml?

java - spring JTable创建抛出异常

Java正则表达式从URL解析特定分号分隔的参数?

javascript - 将用户输入的字符串转换为正则表达式

python - 如何将re.findall应用于文件为空列表

jquery - 如何将正则表达式与字符串中的任何单词匹配

java - Jlibmodbus 读取保持寄存器限制为 125