在我正在编写的程序中,我使用Python re.search()函数在一个文本块中查找匹配项并打印结果.但是,程序一旦找到文本块中的第一个匹配就退出.
如果程序没有停止,直到找到所有匹配项,我该如何反复执行此操作?有没有单独的功能来做到这一点?
如何计算Python中字符串中给定子字符串的出现次数?
例如:
>>> 'foo bar foo'.numberOfOccurrences('foo')
2
Run Code Online (Sandbox Code Playgroud) >>> match = re.findall(r'\w\w', 'hello')
>>> print match
['he', 'll']
Run Code Online (Sandbox Code Playgroud)
因为\ w\w意味着两个字符,'他'和'll'是预期的.但为什么'el'和'lo' 与正则表达式不匹配?
>>> match1 = re.findall(r'el', 'hello')
>>> print match1
['el']
>>>
Run Code Online (Sandbox Code Playgroud) 我正在解析其中可能包含任意数量的引用字符串的字符串(我正在解析代码,并试图避免PLY).我想知道是否引用了子字符串,并且我有子字符串索引.我最初的想法是使用re来查找所有匹配项,然后找出它们所代表的索引范围.
看起来我应该像正则表达式一样使用re \"[^\"]+\"|'[^']+'(我现在避免处理三重引号和此类字符串).当我使用findall()时,我得到了匹配字符串的列表,这有点不错,但我需要索引.
我的子字符串可能很简单c,我需要弄清楚这个特殊字符c是否实际被引用.
计算给定字符串出现次数的最佳方法是什么,包括python中的重叠?这是最明显的方式:
def function(string, str_to_search_for):
count = 0
for x in xrange(len(string) - len(str_to_search_for) + 1):
if string[x:x+len(str_to_search_for)] == str_to_search_for:
count += 1
return count
function('1011101111','11')
returns 5
Run Code Online (Sandbox Code Playgroud)
?
或者在python中有更好的方法吗?
我有一个像这样的字符串
aaabbbbcca
Run Code Online (Sandbox Code Playgroud)
我想从中解析所有可能的统一子字符串。所以我对该字符串的预期子字符串是
['a', 'aa', 'aaa', 'b', 'bb', 'bbb', 'bbbb', 'c', 'cc', 'a']
Run Code Online (Sandbox Code Playgroud)
我尝试了以下方法
import re
print(re.findall(r"([a-z])(?=\1*)", "aaabbbbcca"))
# Output: ['a', 'a', 'a', 'b', 'b', 'b', 'b', 'c', 'c', 'a']
Run Code Online (Sandbox Code Playgroud)
可以通过正则表达式吗?如果是,那么如何?
我有一个字符串'aabaacaba'.从左边开始,我试图得到所有大小> = 2的子串,后面会出现在字符串中.例如,aa再次出现在字符串中,情况也是如此ab.
我写了以下正则表达式代码:
re.findall(r'([a-z]{2,})(?:[a-z]*)(?:\1)', 'aabaacaba')
Run Code Online (Sandbox Code Playgroud)
我得到['aa']作为答案.正则表达式错过了ab模式.我认为这是因为人物重叠.请建议一个解决方案,以便修复表达式.谢谢.
是否有可能获得所有重叠匹配,这些匹配从同一索引开始,但来自不同的匹配组?
例如,当我从"ABC"寻找模式"(A)|(AB)"时,正则表达式应该返回以下匹配:
(0,"A")和(0,"AB")