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)
包含abc
与group(1)
包含c
。但是findall()
返回字符串,而不是MatchObjects。如果没有组,则返回所有匹配项的列表;如果有组,则列表包含所有捕获,但
不 包含整体匹配。
因此,您的两个正则表达式都与整个字符串匹配,但是第一个正则表达式也分别捕获并丢弃了每个字符(这毫无意义)。只是这出乎意料的行为findall()
使您看起来好像获得了不同的结果。
问题内容: 谁能解释和正则表达式元字符之间的区别?据我了解,这两个元字符都用于单词边界。除此之外,哪个元字符对于多语言内容有效? 问题答案: 元字符是锚号,例如插入号和美元符号。它在称为 “单词边界” 的位置匹配。此匹配为零长度。 有三个不同的位置可作为单词边界: 如果字符串中的第一个字符是单词字符,则在字符串中第一个字符之前。 如果字符串中的最后一个字符是单词字符,则在字符串的最后一个字符之后。
问题内容: 谁能解释和正则表达式元字符之间的区别?据我了解,这两个元字符都用于单词边界。除此之外,哪个元字符对于多语言内容有效? 问题答案: 元字符是锚号,例如插入号和美元符号。它在称为“单词边界”的位置匹配。此匹配为零长度。 有三个不同的位置可作为单词边界: 如果字符串中的第一个字符是单词字符,则在字符串中第一个字符之前。 如果字符串中的最后一个字符是单词字符,则在字符串的最后一个字符之后。 字
我正在尝试编写一个正则表达式,使其只有两个单词,它们之间只有一个空格。两个字都不能少于三个字符。例子:乔·史密斯
我想验证用户输入,它应该由1和3之间的两位数字组成,用空格隔开。到目前为止,示例是匹配的。 是我的正则表达式还是我正在用一开始就错了吗? 例如,如果我输入,我就会得到这个。相反,我想验证它是正确的,然后继续进行,而不会被困在循环中。
我尝试借助< code > nodejs < code > fs . read file sync()函数将文件内容提取到字符串中,如下所示: 在此之后,我想通过获取两个字符串之间的内容: 我有一个类似这样的字符串: 我需要在
问题内容: Python和JavaScript正则表达式语法是否相同? 如果不是,则: 它们之间的重要区别是什么 是否有一个“实现” JavaScript正则表达式的python库? 问题答案: 这里有一个比较表: 正则表达式风味比较