gpt4 book ai didi

java - 正则表达式查找字母和数字由符号分隔或不分隔的单词

转载 作者:行者123 更新时间:2023-12-03 21:28:59 25 4
gpt4 key购买 nike

我需要构建一个正则表达式来匹配具有这些模式的单词:

字母和数字:

A35, 35A, B503X, 1ABC5

以“-”、“/”、“\”分隔的字母和数字:

AB-10, 10-AB, A10-BA, BA-A10, etc...

我为它写了这个正则表达式:

\b[A-Za-z]+(?=[(?<!\-|\\|\/)\d]+)[(?<!\-|\\|\/)\w]+\b|\b[0-9]+(?=[(?<!\-|\\|\/)A-Za-z]+)[(?<!\-|\\|\/)\w]+\b

它部分起作用,但它仅匹配字母或仅匹配由符号分隔的数字。示例:

10-10, open-office, etc.

我不想要这场比赛。

我想我的正则表达式非常重复而且有点难看。但这就是我现在所拥有的。

谁能帮帮我?

我正在使用 java/groovy。

提前致谢。

最佳答案

有趣的挑战。这是一个带有正则表达式的 Java 程序,它可以挑选出您所追求的“单词”的类型:

import java.util.regex.*;
public class TEST {
public static void main(String[] args) {
String s = "A35, 35A, B503X, 1ABC5 " +
"AB-10, 10-AB, A10-BA, BA-A10, etc... " +
"10-10, open-office, etc.";
Pattern regex = Pattern.compile(
"# Match special word having one letter and one digit (min).\n" +
"\\b # Match first word having\n" +
"(?=[-/\\\\A-Za-z]*[0-9]) # at least one number and\n" +
"(?=[-/\\\\0-9]*[A-Za-z]) # at least one letter.\n" +
"[A-Za-z0-9]+ # Match first part of word.\n" +
"(?: # Optional extra word parts\n" +
" [-/\\\\] # separated by -, / or //\n" +
" [A-Za-z0-9]+ # Match extra word part.\n" +
")* # Zero or more extra word parts.\n" +
"\\b # Start and end on a word boundary",
Pattern.COMMENTS);
Matcher regexMatcher = regex.matcher(s);
while (regexMatcher.find()) {
System.out.print(regexMatcher.group() + ", ");
}
}
}

这是正确的输出:

A35, 35A, B503X, 1ABC5, AB-10, 10-AB, A10-BA, BA-A10,

请注意,唯一“丑陋”的复杂正则表达式是那些未正确格式化和注释的正则表达式!

关于java - 正则表达式查找字母和数字由符号分隔或不分隔的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5732035/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com