如何在Python中实现正则表达式?那里有什么样的效率保证?实施是"标准",还是可以改变?
我认为正则表达式将作为DFA实现,因此非常有效(最多需要对输入字符串进行一次扫描).Laurence Gonsalves提出了一个有趣的观点,即并非所有Python正则表达式都是常规的.(他的例子是r"(a +)b\1",它匹配a的一些数量,ab,然后是与之前相同数量的a).使用DFA显然无法实现这一点.
那么,重申一下:Python正则表达式的实现细节和保证是什么?
如果有人可以给出某种解释(根据实现),为什么正则表达式"cat | catdog"和"catdog | cat"导致字符串"catdog"中的搜索结果不同,这也是很好的.在我之前提到的问题中提到过.
将子字符串列表与字符串列表相匹配的Pythonic方法是什么,如下所示:
if 'sub1' in str1 or 'sub2' in str1 or ... 'subN' in str1 or\
   'sub1' in str2 or 'sub2' in str2 or ... 'subN' in str2 or\
   ...
   'sub1' in strM or 'sub2' in strM or ... 'subN' in strM:
一种方法是将它们与列表理解结合起来,如下所示:
strList = [str1, str2, ..., strM]
subList = ['sub1', ..., 'subN']
if any(sub in str for sub in subList for str in strList):
有没有更好的东西,比如库函数,可以吸收其中一个维度?
非常感谢。
我想搜索一个字符串并获取给定子字符串集中任何子字符串的第一个索引。
我尝试'word'.find('g' or 'r')并期望这会返回索引:2,但or显然不起作用。
我怎样才能简洁地实现这一目标?