当前位置: 首页 > 面试题库 >

两个正则表达式之间的区别:[abc] +和([abc])+

罗睿识
2023-03-14
问题内容
In [29]: re.findall("([abc])+","abc")
Out[29]: ['c']

In [30]: re.findall("[abc]+","abc")
Out[30]: ['abc']

被分组的一头雾水。它有什么不同?


问题答案:

这里有两件事需要解释:量化组的行为和findall()方法的设计。

在您的第一个示例中,[abc]匹配a在组#1中捕获的。然后,它匹配b并捕获到#1组中,从而覆盖a。然后再次使用c,这就是比赛结束时第一组的比赛。

但是它 确实
匹配整个字符串。如果您正在使用search()或者finditer(),你就可以看MatchObject,看到group(0)包含abcgroup(1)包含c。但是findall()返回字符串,而不是MatchObjects。如果没有组,则返回所有匹配项的列表;如果有组,则列表包含所有捕获,但
包含整体匹配。

因此,您的两个正则表达式都与整个字符串匹配,但是第一个正则表达式也分别捕获并丢弃了每个字符(这毫无意义)。只是这出乎意料的行为findall()使您看起来好像获得了不同的结果。



 类似资料:
  • 问题内容: 谁能解释和正则表达式元字符之间的区别?据我了解,这两个元字符都用于单词边界。除此之外,哪个元字符对于多语言内容有效? 问题答案: 元字符是锚号,例如插入号和美元符号。它在称为 “单词边界” 的位置匹配。此匹配为零长度。 有三个不同的位置可作为单词边界: 如果字符串中的第一个字符是单词字符,则在字符串中第一个字符之前。 如果字符串中的最后一个字符是单词字符,则在字符串的最后一个字符之后。

  • 问题内容: 谁能解释和正则表达式元字符之间的区别?据我了解,这两个元字符都用于单词边界。除此之外,哪个元字符对于多语言内容有效? 问题答案: 元字符是锚号,例如插入号和美元符号。它在称为“单词边界”的位置匹配。此匹配为零长度。 有三个不同的位置可作为单词边界: 如果字符串中的第一个字符是单词字符,则在字符串中第一个字符之前。 如果字符串中的最后一个字符是单词字符,则在字符串的最后一个字符之后。 字

  • 我正在尝试编写一个正则表达式,使其只有两个单词,它们之间只有一个空格。两个字都不能少于三个字符。例子:乔·史密斯

  • 我想验证用户输入,它应该由1和3之间的两位数字组成,用空格隔开。到目前为止,示例是匹配的。 是我的正则表达式还是我正在用一开始就错了吗? 例如,如果我输入,我就会得到这个。相反,我想验证它是正确的,然后继续进行,而不会被困在循环中。

  • 我尝试借助< code > nodejs < code > fs . read file sync()函数将文件内容提取到字符串中,如下所示: 在此之后,我想通过获取两个字符串之间的内容: 我有一个类似这样的字符串: 我需要在

  • 问题内容: Python和JavaScript正则表达式语法是否相同? 如果不是,则: 它们之间的重要区别是什么 是否有一个“实现” JavaScript正则表达式的python库? 问题答案: 这里有一个比较表: 正则表达式风味比较