我使用此代码来匹配
var regex = new Regex(@"\[0-9]{3,4}/?\s?\\?\-?_?[A-Z]{2,2}-?\s?/?_?\\?[A-Z]{2,2}");
var match = regex.Match(str);
if (match.Success)
{
Console.WriteLine(match.Value);
Console.ReadLine();
}
这个字符串:1111 CD XZ 还有这个 1111/AB-XZ 但是没有用,我昨天才开始使用 Regex 进行编程的初始步骤。我做错了什么?
最佳答案
您的正则表达式已损坏,因为 [
之前的 \
使正则表达式引擎匹配文字 [
符号,而您想要创建一个字符类.此外,您可以为字符串中的分隔符定义一个非单词可选模式,而不是定义一系列可选字符。
你可以使用
@"\b[0-9]{3,4}(?:\W?[A-Z]{2}){2}\b"
参见 regex demo
详情
\b
- 单词边界(以确保您稍后真正匹配 3 到 4 位数字序列)[0-9]{3,4}
- 3 到 4 位数字(?:\W?[A-Z]{2}){2}
- 2 个序列\W?
- 一个可选的非单词字符(空格、标点符号或符号)[A-Z]{2}
- 2 个大写 ASCII 字母
\b
- 尾随单词边界。
关于c# - 正则表达式匹配.Net,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46891265/