Python 如果在一种情况下后面没有数字,则正则表达式匹配字符串
我有正则表达式:Python 如果在一种情况下后面没有数字,则正则表达式匹配字符串,python,regex,Python,Regex,我有正则表达式: ^[-\s]+|Not Specified$ 我得到以下所有字符串的匹配: -- Not Specified - - - eV -270 - 1000 deg C 但我只想得到前三个 我不想听到这样的话: MTF, Depth, Focus, Blur sub-micron 您需要添加括号。\D与十进制数字以外的任何数字匹配: ^(\D+|Not Specified)$ 您甚至可以分解为:
^[-\s]+|Not Specified$
我得到以下所有字符串的匹配:
--
Not Specified
- - - eV
-270 - 1000 deg C
但我只想得到前三个
我不想听到这样的话:
MTF, Depth, Focus, Blur
sub-micron
您需要添加括号。\D与十进制数字以外的任何数字匹配:
^(\D+|Not Specified)$
您甚至可以分解为:
^\D*$
您需要添加括号。\D与十进制数字以外的任何数字匹配:
^(\D+|Not Specified)$
您甚至可以分解为:
^\D*$
您可以匹配未指定的
,或者至少匹配一个-
,而不匹配数字或换行符:
^(?:Not Specified|[^\r\n\d-]*-[^\r\n\d]*)$
解释
字符串的开头^
非捕获组(?:
按字面匹配未指定
或|
匹配除数字、[^\r\n\d-]*-
或换行符以外的任何字符的0+倍,然后匹配-
-
匹配除换行符或数字以外的任何字符的0+倍[^\r\n\d]*
关闭组)
字符串结尾$
请注意,
\s
还匹配一个换行符,如果需要,您可以省略\r\n
,这样被求反的字符类将与新行符匹配。您可以匹配未指定的或至少匹配一个-
,而不匹配数字或换行符:
^(?:Not Specified|[^\r\n\d-]*-[^\r\n\d]*)$
解释
^
字符串的开头
(?:
非捕获组
未指定
按字面匹配
|
或
[^\r\n\d-]*-
匹配除数字、-
或换行符以外的任何字符的0+倍,然后匹配-
[^\r\n\d]*
匹配除换行符或数字以外的任何字符的0+倍
)
关闭组
$
字符串结尾
请注意,\s
还匹配一个换行符,如果需要,您可以省略\r\n
,这样被求反的字符类将与新行符匹配。您的正则表达式捕获字符串,如我不想匹配的“MTF、Depth、Focus、Blur”。更新了我的问题。@user3541631该模式与您的正则表达式捕获字符串“MTF、Depth、Focus、Blur”等我不想匹配的单词不匹配。更新了我的问题。@user3541631模式与这些单词不匹配