匹配这些pdf文件名的正则表达式
Regular expressions to match these pdf file names
我正在寻找匹配 fileNamePattern 的正则表达式。
文件是 pdf 可以有这些名称:8 个字母数字字符,-
,4 个字母数字字符,-
,4 个字母数字字符,-
,4 个字母数字字符,-
,12 个字母数字字符字符 + .pdf
.
示例:
5b7f991f-0726-4dd5-856e-7cea820f02c5.pdf
138bcee6-db7f-47a7-97bf-69c0b3989698.pdf
e988315b-ade7-48e5-9733-35bb59a3c28d.pdf
我正在使用
^[A-Z][0-9]{8}[-][A-Z][0-9]{4}[-][A-Z][0-9]{4}[-][A-Z][0-9]{4}[-][A-Z][0-9]{12}[.]pdf
但是,我不确定它是否正确,因为我找不到匹配项。
Regex r = new Regex(@"^\w{8}-\w{4}-\w{4}-\w{4}-\w{12}\.pdf$");
如果您明确不想使用下划线,您可以使用:
^[a-zA-Z\d]{8}-[a-zA-Z\d]{4}-[a-zA-Z\d]{4}-[a-zA-Z\d]{4}-[a-zA-Z\d]{12}\.pdf$
正则表达式区分大小写(除非您使用 RegexOptions
指定它忽略大小写。
现在的主要问题是你的正则表达式说匹配一个字母然后匹配 n
数字而不是匹配 n
字母数字字符。
通过设置不区分大小写的标志,您的正则表达式可以简化为:
^[A-Z\d]{8}-[A-Z\d]{4}-[A-Z\d]{4}-[A-Z\d]{4}-[A-Z\d]{12}\.pdf$
这应该有效
/(\w{8})-(\w{4})-(\w{4})-(\w{4})-(\w{12})(.pdf)/i
这里试过了
\w = 字母数字
{n} = 标志应该出现的次数
gi = 标志:"i" = 不区分大小写。
您只匹配正则表达式中的大写字母,当您使用 [A-Z][0-9]{4}
时,您不匹配四个字母数字字符,而是匹配一个字母后跟 4 个数字。
所以,你需要合并[A-Z][0-9]
成单个字符类[A-Z0-9]
,然后使用不区分大小写的标志。
此外,您需要在正则表达式的末尾使用 $
以使模式匹配整个字符串。
使用
^[A-Z0-9]{8}-[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{12}[.]pdf$
在 C# 中,
var rx = new Regex(@"^[A-Z0-9]{8}-[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{12}[.]pdf$", RegexOptions.IgnoreCase);
请注意,可以使用内联修饰符设置不区分大小写 (?i)
:
var pattern = @"(?i)^[A-Z0-9]{8}-[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{12}[.]pdf$";
// check if the string matches the pattern
if (Regex.IsMatch(s, pattern)
{
// The string matches...
}
我正在寻找匹配 fileNamePattern 的正则表达式。
文件是 pdf 可以有这些名称:8 个字母数字字符,-
,4 个字母数字字符,-
,4 个字母数字字符,-
,4 个字母数字字符,-
,12 个字母数字字符字符 + .pdf
.
示例:
5b7f991f-0726-4dd5-856e-7cea820f02c5.pdf
138bcee6-db7f-47a7-97bf-69c0b3989698.pdf
e988315b-ade7-48e5-9733-35bb59a3c28d.pdf
我正在使用
^[A-Z][0-9]{8}[-][A-Z][0-9]{4}[-][A-Z][0-9]{4}[-][A-Z][0-9]{4}[-][A-Z][0-9]{12}[.]pdf
但是,我不确定它是否正确,因为我找不到匹配项。
Regex r = new Regex(@"^\w{8}-\w{4}-\w{4}-\w{4}-\w{12}\.pdf$");
如果您明确不想使用下划线,您可以使用:
^[a-zA-Z\d]{8}-[a-zA-Z\d]{4}-[a-zA-Z\d]{4}-[a-zA-Z\d]{4}-[a-zA-Z\d]{12}\.pdf$
正则表达式区分大小写(除非您使用 RegexOptions
指定它忽略大小写。
现在的主要问题是你的正则表达式说匹配一个字母然后匹配 n
数字而不是匹配 n
字母数字字符。
通过设置不区分大小写的标志,您的正则表达式可以简化为:
^[A-Z\d]{8}-[A-Z\d]{4}-[A-Z\d]{4}-[A-Z\d]{4}-[A-Z\d]{12}\.pdf$
这应该有效 /(\w{8})-(\w{4})-(\w{4})-(\w{4})-(\w{12})(.pdf)/i
这里试过了\w = 字母数字 {n} = 标志应该出现的次数
gi = 标志:"i" = 不区分大小写。
您只匹配正则表达式中的大写字母,当您使用 [A-Z][0-9]{4}
时,您不匹配四个字母数字字符,而是匹配一个字母后跟 4 个数字。
所以,你需要合并[A-Z][0-9]
成单个字符类[A-Z0-9]
,然后使用不区分大小写的标志。
此外,您需要在正则表达式的末尾使用 $
以使模式匹配整个字符串。
使用
^[A-Z0-9]{8}-[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{12}[.]pdf$
在 C# 中,
var rx = new Regex(@"^[A-Z0-9]{8}-[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{12}[.]pdf$", RegexOptions.IgnoreCase);
请注意,可以使用内联修饰符设置不区分大小写 (?i)
:
var pattern = @"(?i)^[A-Z0-9]{8}-[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{12}[.]pdf$";
// check if the string matches the pattern
if (Regex.IsMatch(s, pattern)
{
// The string matches...
}