Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 需要模式匹配方面的帮助吗_Python_Regex - Fatal编程技术网

Python 需要模式匹配方面的帮助吗

Python 需要模式匹配方面的帮助吗,python,regex,Python,Regex,问题:句子以hi开头,不区分大小写,后面没有空格和字母d 我的正则表达式:[hi | hi | hi | hi][^d | d][a-zA-Z]* 然而,我不明白为什么这个字符串hI dave你好被regex接受 为此,我正在使用pythonre库。 尝试:我尝试过不同的版本,但似乎都不管用 不能在角色类内部使用。字符类定义一组字符。Saying-匹配类指定的一个字符。最简单的方法是在使用内联的不区分大小写修饰符和时实现 说明: (?i) # set flags for this blo

问题:句子以hi开头,不区分大小写,后面没有空格和字母d

我的正则表达式:[hi | hi | hi | hi][^d | d][a-zA-Z]*

然而,我不明白为什么这个字符串hI dave你好被regex接受

为此,我正在使用pythonre库。 尝试:我尝试过不同的版本,但似乎都不管用

不能在角色类内部使用。字符类定义一组字符。Saying-匹配类指定的一个字符。最简单的方法是在使用内联的不区分大小写修饰符和时实现

说明:

(?i)     # set flags for this block (case-insensitive) 
^        # the beginning of the string
 hi      #   'hi'
 (?!     #   look ahead to see if there is not:
   d     #     ' d'
 )       #   end of look-ahead
.*       # any character except \n (0 or more times)
不能在角色类内部使用。字符类定义一组字符。Saying-匹配类指定的一个字符。最简单的方法是在使用内联的不区分大小写修饰符和时实现

说明:

(?i)     # set flags for this block (case-insensitive) 
^        # the beginning of the string
 hi      #   'hi'
 (?!     #   look ahead to see if there is not:
   d     #     ' d'
 )       #   end of look-ahead
.*       # any character except \n (0 or more times)

字符集只是方括号中的字符。你不必用|把它们分开,所以这个

 [hi|HI|hI|Hi]
将只表示一个字符,即h、i、|、h或i

这就是为什么您的正则表达式匹配hI dave您好,因为第一个字符是h,下一个字符不是空格d、|或d,最后一部分匹配零次

请注意,如果要匹配整个输入,必须使用锚来表示字符串的开头或结尾

因此,您应该将字符串的开头与^匹配,然后是h或h中的任意一个,后面是i或i,最后是除了空格和D之外的任何内容,这就是

^[hH][iI]( [^dD]|[^ ])

请注意,应该允许空格后跟d或d以外的任何字符,如果后跟hi没有空格,则可以后跟任何字符。

字符集只是方括号之间的字符。你不必用|把它们分开,所以这个

 [hi|HI|hI|Hi]
将只表示一个字符,即h、i、|、h或i

这就是为什么您的正则表达式匹配hI dave您好,因为第一个字符是h,下一个字符不是空格d、|或d,最后一部分匹配零次

请注意,如果要匹配整个输入,必须使用锚来表示字符串的开头或结尾

因此,您应该将字符串的开头与^匹配,然后是h或h中的任意一个,后面是i或i,最后是除了空格和D之外的任何内容,这就是

^[hH][iI]( [^dD]|[^ ])

请注意,您应该允许空格后跟除d或d以外的任何字符,如果后跟hi没有空格,则可以后跟任何字符。

可能是因为除了实际问题之外,您缺少反斜杠吗?您可能需要进一步阅读。你用错了。非常感谢这是一个计算正则表达式的好工具。这个工具非常有用,可能是因为除了真正的问题之外,你缺少了反斜杠?你可能想多读一点。你用错了。非常感谢这是一个计算正则表达式的好工具。这个工具非常有用