Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.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,我有下面的正则表达式,用于在字符串中查找“IF”关键字(不区分大小写)。实施了一些限制: 它前面应该有一个空格或一个字符(来自上一个表达式) 后跟空格或(字符) 下面的表达式完成了这些约束。但是,当该表达式位于字符串开头时,它找不到关键字(例如,if(foo,1,2)) 使用类似于^ |(?的方法,您可以使用具有两个零宽度断言的替换组: (?i)(?:^|(?<=[\s)]))if(?=[\s(]) ^^^^^^^^^^^^^^^^ (?i)(?:^ |)(?问题在于|应用于

我有下面的正则表达式,用于在字符串中查找“IF”关键字(不区分大小写)。实施了一些限制:

  • 它前面应该有一个空格或一个字符(来自上一个表达式)
  • 后跟空格或(字符)
下面的表达式完成了这些约束。但是,当该表达式位于字符串开头时,它找不到关键字(例如,
if(foo,1,2)


使用类似于
^ |(?的方法,您可以使用具有两个零宽度断言的替换组:

(?i)(?:^|(?<=[\s)]))if(?=[\s(])
    ^^^^^^^^^^^^^^^^

(?i)(?:^ |)(?问题在于
|
应用于顶层,因此它是以下两者之间的一种转换:
^
(?您可以使用双重否定来解决问题(对于仅涉及单个字符的特定情况):

(?<![^\s)])
(?

(前面没有空格或右括号以外的字符)。此条件也包括字符串的开头。

感谢您的附加注释和更正。顺便说一句,
(?i)(?:^|)(?)?
(?<![^\s)])