【发布时间】:2016-04-12 22:29:58
【问题描述】:
例如,在这个字符串“3F、4B、AA、A4B”中,我想要一个能够捕获 3F、4B 和 AA 的正则表达式模式。逗号之间的字符数必须为 2。唯一的例外是如果两个字符都是数字,我们不想接受。我们也不关心空白。
【问题讨论】:
标签: java regex pattern-matching
例如,在这个字符串“3F、4B、AA、A4B”中,我想要一个能够捕获 3F、4B 和 AA 的正则表达式模式。逗号之间的字符数必须为 2。唯一的例外是如果两个字符都是数字,我们不想接受。我们也不关心空白。
【问题讨论】:
标签: java regex pattern-matching
你可以使用这个前瞻正则表达式:
\b([a-zA-Z][a-zA-Z\d]|\d[a-zA-Z])(?=\s*,)
\b 用于单词边界。(?=\s*,) 断言在 2 个字符后有以下 ,。([a-zA-Z][a-zA-Z\d]|\d[a-zA-Z]) 确保我们在 2 个字符中至少使用一个字母在 Java 中:
Pattern p = Pattern.compile("\\b([a-zA-Z][a-zA-Z\\d]|\\d[a-zA-Z])(?=\\s*,)");
【讨论】:
\b(?:(?:[a-zA-Z][a-zA-Z\d]|\d[a-zA-Z])\s*,\s*)+ 匹配包括逗号在内的完整字符串。此外,您无需删除接受标记即可提出问题。您可以将 cmets 留在这里,即使我接受了答案,我也会在在线时尝试回答。
【讨论】: