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 正则表达式(?<;=\s)\d(?=\s)和(?<;!\s)\d(?!\s)之间有什么区别_Python_Regex_Python 3.x - Fatal编程技术网

Python 正则表达式(?<;=\s)\d(?=\s)和(?<;!\s)\d(?!\s)之间有什么区别

Python 正则表达式(?<;=\s)\d(?=\s)和(?<;!\s)\d(?!\s)之间有什么区别,python,regex,python-3.x,Python,Regex,Python 3.x,为什么是表达 (?<=\s)\d(?=\s) (?<!\S)\d(?!\S) (? 一个不同点是,正向向后看和向前看要求要查找的字符存在,而反向向后看则不存在。例如 1 2 将有2场比赛 (?<!\S)\d(?!\S) (?<=\s)\d(?=\s) (? 但是没有匹配的 (?<!\S)\d(?!\S) (?<=\s)\d(?=\s) (?一个不同点是,正向后看和向前看要求要查找的字符存在,而负向后看则不存在。例如 1 2 将有2场比赛 (?&

为什么是表达

(?<=\s)\d(?=\s)
(?<!\S)\d(?!\S)
(?

一个不同点是,正向向后看和向前看要求要查找的字符存在,而反向向后看则不存在。例如

1 2
将有2场比赛

(?<!\S)\d(?!\S)
(?<=\s)\d(?=\s)
(?
但是没有匹配的

(?<!\S)\d(?!\S)
(?<=\s)\d(?=\s)

(?一个不同点是,正向后看和向前看要求要查找的字符存在,而负向后看则不存在。例如

1 2
将有2场比赛

(?<!\S)\d(?!\S)
(?<=\s)\d(?=\s)
(?
但是没有匹配的

(?<!\S)\d(?!\S)
(?<=\s)\d(?=\s)
(?
#为什么是表达式
(?
当您对否定类使用否定断言时,它也将匹配
在BOS和EOS位置,而肯定断言不会。为什么表达式是 (? 当您对否定类使用否定断言时,它也将匹配


在BOS和EOS的位置,而积极的断言不会。

想想字符串的末尾。如果不理解所涉及的正确原则,必须给a-1。@sln-1一个负面评级,因为我不理解一些东西?我想这就是你提问的原因。是的,这不是问题,而是答案。我知道通过他们的选择来判断他们是否理解他们所做的选择。@sln啊,我明白了。我发现你对我的问题的回答也很有帮助,但某些性能的回答让我直觉地知道了为什么(?想想绳子的末端。如果不理解所涉及的正确原则,必须给a-1。@sln-1一个负面评级,因为我不理解一些东西?我想这就是你提问的原因。是的,这不是问题,而是答案。我根据海报的选择来判断他们是否理解这些选择我知道了。@sln啊,我知道了。我发现你对我的问题的回答也很有帮助,但某些性能的回答让我直觉地知道为什么(?非常感谢!鉴于字符串“12”,我认为行的结尾被视为“非空白的东西”,因此(?!\s)应该为False。这不能概括为true。肯定断言不一定需要字符存在。肯定和否定都没有这样的属性…@sln当然,如果OP使用的是不使用字符的东西,如
\b
/
\b
或另一个前瞻,这是真的,但OP使用的是
>\s
\s
,它们匹配一个字符-因此,正向查找需要查找的字符存在,而反向查找不存在。(如果根本没有查找字符,则这是一个单独的类别)仍然不正确。OP的否定断言确实要求字符存在,它必须是空白。因此,你看,区别不在于断言本身。@sln你是什么意思?否定查找不要求字符存在-例如,仅使用否定查找和前瞻,一个包含
1
和no的字符串其他内容匹配(无空格)切换
\S
的查找框中的
\S
S,同样的情况发生了-数字仍然匹配,因为查找框失败了。非常感谢!给定字符串“12”,我认为行的结尾被视为“除空格以外的其他内容”,因此(?!\S)应该为False。这不能概括为true。肯定断言不一定需要字符存在。肯定和否定都没有这样的属性…@sln当然,如果OP使用的是不使用字符的东西,如
\b
/
\b
或另一个前瞻,这是真的,但OP使用的是
>\s
\s
,它们匹配一个字符-因此,正向查找需要查找的字符存在,而反向查找不存在。(如果根本没有查找字符,则这是一个单独的类别)仍然不正确。OP的否定断言确实要求字符存在,它必须是空白。因此,你看,区别不在于断言本身。@sln你是什么意思?否定查找不要求字符存在-例如,仅使用否定查找和前瞻,一个包含
1
和no的字符串其他内容匹配(无空格)切换
\S
的查找框中的
\S
S,同样的情况也会发生-数字仍然匹配,因为查找框失败是否确实要在否定字符类上使用否定断言才能使您的语句为真?(?@zwithouta-对于初学者来说,这不是一个容易理解的主题。小正则表达式魔法来自一个封装在否定断言中的否定类。它不仅仅是断言。这是关于匹配中间字符串中的某些内容,如分隔符。肯定类太有限,无法定义您不想要的内容和您要做的内容,所以使用否定的class定义您想要的特定内容。例如,
(?![^abc])
其中a或b或c是您需要的分隔符(在文本中),或者EOS/BOS。请记住,
(?!\s)
实际上是
(?!(?=\s))
确实有否定断言用于否定字符类,以便您的语句为真?(?@zwithouta-对于初学者来说,这不是一个容易理解的主题。小正则表达式魔法来自一个封装在否定断言中的否定类。它不仅仅是断言。这是关于匹配中间字符串中的某些内容,如分隔符。肯定类太有限,无法定义您不想要的内容和您要做的内容,所以使用否定的class定义您想要的特定内容。例如
(?![^abc])
其中a或b或c是您需要的分隔符(文本),或者EOS/BOS。请记住
(?!\s)
实际上是
(?!(?=\s))