gpt4 book ai didi

c# - 如果字符串长度为 2 且包含 1 个字母和 1 个数字,则正则表达式匹配

转载 作者:行者123 更新时间:2023-12-02 17:50:39 24 4
gpt4 key购买 nike

伙计们,我讨厌正则表达式,而且我的写作能力很差。

我有一个以空格分隔的字符串,其中包含我需要提取的多个代码。每个代码都以大写字母开头并以数字结尾。代码只有两位数。

我正在尝试从初始字符串创建一个字符串数组,但我无法获得正确的正则表达式。

这是我的

String[] test = Regex.Split(originalText, "([a-zA-Z0-9]{2})");

我也试过:

String[] test = Regex.Split(originalText, "([A-Z]{1}[0-9]{1})");

我没有任何使用正则表达式的经验,因为我尽可能避免编写它们。

有人有什么建议吗?

示例输入:

AA2410 F7 A4 Y7 B7 A 0715 0836 E0.M80

我需要拉出 F7、A4、B7。 E0 应该被忽略。

最佳答案

您想收集结果,而不是拆分结果,对吗?

Regex regexObj = new Regex(@"\b[A-Z][0-9]\b");
allMatchResults = regexObj.Matches(subjectString);

应该这样做。 \b 是单词边界,确保只提取整个字符串(如 A1),而不是子字符串(如 A1 TWA101).

如果您还需要排除其中包含非单词字符的“单词”(如评论中的E0.M80),您需要定义自己的单词边界,例如:

Regex regexObj = new Regex(@"(?<=^|\s)[A-Z][0-9](?=\s|$)");

现在 A1 仅在被空格(或字符串开始/结束位置)包围时匹配。

解释:

(?<=  # Assert that we can match the following before the current position:
^ # Start of string
| # or
\s # whitespace.
)
[A-Z] # Match an uppercase ASCII letter
[0-9] # Match an ASCII digit
(?= # Assert that we can match the following after the current position:
\s # Whitespace
| # or
$ # end of string.
)

如果还需要查找非ASCII字母/数字,可以使用

\p{Lu}\p{N}

而不是 [A-Z][0-9]。这会找到所有大写 Unicode 字母和 Unicode 数字(如 Ä٣),但我想这并不是您真正想要的,对吗?

关于c# - 如果字符串长度为 2 且包含 1 个字母和 1 个数字,则正则表达式匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8761680/

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