在 perl 上匹配这个正则表达式
Match this regex on perl
我对 Perl 还很陌生,对正则表达式更是如此。
一直在尝试匹配以下,但没有成功:
- 第一个,3 到 4 个字母(最好不区分大小写)
- 可选 space(但不是强制性的)
- 然后,还可以选择一个已知的大写字母 (
M
) 和 1,2,3
中的一个数字
有效字符串的一个示例是 abc
,但也可能是 DEFG M2
。无效的是mem M
,例如
我目前拥有的是:
$myExpr ~= m/^[a-z,A-z]{3,4}M[1,2,3]$/i
不确定如何使 M
和数字可选
将您的可选符号与 (?:)
分组并使用 "zero or one" 量词 ?
。
$myExpr =~ m/^[a-zA-Z]{3,4}(?: M[123])?$/
我还修复了您的正则表达式中的错误:您没有在字符 类 中使用 ,
- 字面上的意思是 "match ,",修复了 A-Z
范围并删除了 /i
修饰符,因为您没有说明是否需要小写 M,并且第一个范围已经涵盖小写字母和大写字母。
您可以使用以下正则表达式。您不需要在字符 class []
内使用逗号。并删除 i
因为你需要匹配 M
.
$myExpr ~= m/^[a-zA-z]{3,4}(?: M[123])?$/
如果您认为 space 是可选的,那么在 space 之后再次添加 ?
(即 (?: ?M[123])
)。
你为什么不试试下面的正则表达式呢:
$myExpr =~ m/^([a-zA-Z]{3,4})(\s|)(M|)([1-3]|)$/;
([a-zA-Z]{3,4})
- 此 class 中任何字符的组:[a-zA-Z],重复 3 到 4 次。
(\s|)
- 要么有 white-space(space) 要么没有.
(M|)
- 要么有大写 M 要么没有.
([1-3]|)
- 这个 class 是否有任何章程:[1-3]
或没有.
(或)尝试以下
个人推荐这个
$myExpr =~ m/^([a-zA-Z]{3,4})(\s{0,1})(M{0,1})([1-3]{0,1})$/;
([a-zA-Z]{3,4})
- 此 class 中任何字符的组:[a-zA-Z]
重复 3 到 4 次,即它应包含最少 3 个字符,最多 4 个字符。
(\s{0,1})
- \s
组,重复 0 到 1 次,即,它是可选的。
(M{0,1})
- 字符组 M
,重复 0 到 1 次,即它是可选的。
([1-3]{0,1})
- 任何数字 from 1 to 3
的组,重复 0 到 1 次,即它是可选的。
我对 Perl 还很陌生,对正则表达式更是如此。 一直在尝试匹配以下,但没有成功:
- 第一个,3 到 4 个字母(最好不区分大小写)
- 可选 space(但不是强制性的)
- 然后,还可以选择一个已知的大写字母 (
M
) 和1,2,3
中的一个数字
有效字符串的一个示例是 abc
,但也可能是 DEFG M2
。无效的是mem M
,例如
我目前拥有的是:
$myExpr ~= m/^[a-z,A-z]{3,4}M[1,2,3]$/i
不确定如何使 M
和数字可选
将您的可选符号与 (?:)
分组并使用 "zero or one" 量词 ?
。
$myExpr =~ m/^[a-zA-Z]{3,4}(?: M[123])?$/
我还修复了您的正则表达式中的错误:您没有在字符 类 中使用 ,
- 字面上的意思是 "match ,",修复了 A-Z
范围并删除了 /i
修饰符,因为您没有说明是否需要小写 M,并且第一个范围已经涵盖小写字母和大写字母。
您可以使用以下正则表达式。您不需要在字符 class []
内使用逗号。并删除 i
因为你需要匹配 M
.
$myExpr ~= m/^[a-zA-z]{3,4}(?: M[123])?$/
如果您认为 space 是可选的,那么在 space 之后再次添加 ?
(即 (?: ?M[123])
)。
你为什么不试试下面的正则表达式呢:
$myExpr =~ m/^([a-zA-Z]{3,4})(\s|)(M|)([1-3]|)$/;
([a-zA-Z]{3,4})
- 此 class 中任何字符的组:[a-zA-Z],重复 3 到 4 次。(\s|)
- 要么有 white-space(space) 要么没有.(M|)
- 要么有大写 M 要么没有.([1-3]|)
- 这个 class 是否有任何章程:[1-3]
或没有.
(或)尝试以下
个人推荐这个
$myExpr =~ m/^([a-zA-Z]{3,4})(\s{0,1})(M{0,1})([1-3]{0,1})$/;
([a-zA-Z]{3,4})
- 此 class 中任何字符的组:[a-zA-Z]
重复 3 到 4 次,即它应包含最少 3 个字符,最多 4 个字符。(\s{0,1})
-\s
组,重复 0 到 1 次,即,它是可选的。(M{0,1})
- 字符组M
,重复 0 到 1 次,即它是可选的。([1-3]{0,1})
- 任何数字from 1 to 3
的组,重复 0 到 1 次,即它是可选的。