需要一个正则表达式来匹配三个字符串
时间:2020-03-06 15:04:34 来源:igfitidea点击:
我通常远离"正则表达式",因为我很少发现它们有很好的用途。但是在这种情况下,我认为我别无选择。
对于以下情况,我需要使用正则表达式。我将看三个字符串。如果第一个字符为" 1-9"或者字母o,n,d(低或者大),第二个字符为" 1,2或者3",第三个字符为" 0-9",则将匹配。
有人可以帮我吗?
解决方案
[1-9ondOND][123][0-9]
我省略了^
和$
(字符串标记的开头和结尾),因为我们说过我们将拥有三个字符的字符串,但是包括它们没有什么害处,它们可以提高速度,但并不是那样。这么短的输入量很大。
当然,这假设我们使用的语言和语言环境中,o
,n
和d
的大写字母等效为O
,N
和D
。如果不是,则需要告诉正则表达式解释器忽略大小写。该机制因语言/框架而异。
对于python,我们可以使用类似以下内容的代码:
re.match('[1-9ond][123][0-9]', inputstring, re.IGNORECASE)
re.match在字符串的开头强制匹配,因此在任何情况下都不需要^。
Perl / ^ [1-9ondOND] [1-3] [0-9] $ /
^ =字符串开头,$ =字符串结尾
在基于PREG的系统中(如今大多数是这样):
^(?:[1-9]|[ond])[1-3][0-9]$
某些系统需要开始/结束标记(例如PHP,Perl,但不包括.NET),如果我们这样做,则最终会像这样:
/^(?:[1-9]|[ond])[1-3][0-9]$/
其他答案略有不同。将输入限制为完全匹配的文本。
^[1-9ondOND][123][0-9]$
[1-9ond] [123] [0-9]
这是测试正则表达式的有用地方。