匹配有效变量模式的正则表达式

时间:2017-12-09 04:50:16

标签: python regex

假设我有一个字符串s。我想使用正则表达式编写函数,如果s具有以下特征,则返回True。

  1. 忽略前导空格。
  2. 在步骤1之后,s可以从以下任何一个a-z,A-Z或_
  3. 开始
  4. 在第一个角色s之后可以有以下a-z,A-Z,0-9和/或_
  5. 中的0个或更多个
  6. s可以包含1个或多个尾随空白字符。
  7. 我已经尝试了下面建议的解决方案,我哪里出错了?

    import re
    def test_s(s):
         return bool(re.search("[A-Za-z_\s]{1}[A-Za-z0-9_]*[\s]*$",s))
    

    更新: 我尝试了下面的解决方案(它无法捕获我最后的2个测试用例):

    CASE:返回bool(re.search(r' \ s * [A-Za-z _] \ w * \ s *',s))

    TESTLIST = ['__This_Is_a_StringThatShouldWork' , '     SoIsThis1    ' , '4getaboutThis1', '7his_ShouldReturnFalse']]
    for s in TESTLIST:
        print(is_var(s))
    

    [OUT]

    True
    True
    True (Should be False)
    True (Should be False)
    

3 个答案:

答案 0 :(得分:1)

我认为这应该有用。

import re

def test_s(s):
    return bool(re.match("\s+[a-zA-Z_][a-zA-Z0-9_]*\s+", s))

答案 1 :(得分:1)

试试这个:

import re
def test_s(s):
    return bool(re.search(r'\s*[A-Za-z_]\w*\s*', s))

答案 2 :(得分:0)

试试这个正则表达式:

[a-zA-Z_]\w*\s+